为了账号安全,请及时绑定邮箱和手机立即绑定

Linq:有条件地向where子句添加条件

Linq:有条件地向where子句添加条件

慕田峪4524236 2019-09-02 09:05:19
我有这样的查询(from u in DataContext.Users       where u.Division == strUserDiv        && u.Age > 18       && u.Height > strHeightinFeet         select new DTO_UserMaster       {         Prop1 = u.Name,       }).ToList();我想根据是否将这些条件提供给运行此查询的方法来添加各种条件,如年龄,高度。所有条件都包括用户部门。如果提供了年龄,我想将其添加到查询中。同样,如果提供了高度,我也想添加它。如果要使用sql查询完成,我会使用字符串构建器将它们附加到主strSQL查询。但是在Linq中,我只能想到使用IF条件,其中我将编写相同的查询三次,每个IF块都有一个附加条件。有一个更好的方法吗?谢谢你的时间..
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

我通常使用方法链接,但有同样的问题。这是我使用的扩展


public static IQueryable<T> ConditionalWhere<T>(

        this IQueryable<T> source, 

        Func<bool> condition,

        Expression<Func<T, bool>> predicate)

    {

        if (condition())

        {

            return source.Where(predicate);

        }


        return source;

    }

它有助于避免链断裂。也同样ConditionalOrderBy和ConditionalOrderByDescending是有益的。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 1017 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信