博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linq 动态判断
阅读量:5302 次
发布时间:2019-06-14

本文共 1341 字,大约阅读时间需要 4 分钟。

以前要不是使用扩展方法

要么使用如(t==2&&判断条件)||(s==1&&判断条件)
其实可以简单的实现扩展一个whereIf即可(abp实现),如下所示
···
///
/// Filters a by given predicate if given condition is true.
///
/// Queryable to apply filtering
/// A boolean value
/// Predicate to filter the query
/// Filtered or not filtered query based on
public static IQueryable WhereIf(this IQueryable query, bool condition, Expression<Func<T, bool>> predicate)
{
return condition
? query.Where(predicate)
: query;
}

///     /// Filters a 
by given predicate if given condition is true. ///
/// Queryable to apply filtering /// A boolean value /// Predicate to filter the query ///
Filtered or not filtered query based on
public static IQueryable
WhereIf
(this IQueryable
query, bool condition, Expression
> predicate) { return condition ? query.Where(predicate) : query; }

···

使用

例如:

var query = _taskRepository.GetAll().Include(t => t.AssignedPerson)
.WhereIf(input.State.HasValue, t => t.State == input.State.Value)
.WhereIf(!input.Filter.IsNullOrEmpty(), t => t.Title.Contains(input.Filter))
.WhereIf(input.AssignedPersonId.HasValue, t => t.AssignedPersonId == input.AssignedPersonId.Value);

转载于:https://www.cnblogs.com/zinan/p/9367678.html

你可能感兴趣的文章
ps aux 状态介绍
查看>>
二级指针内存模型
查看>>
bzoj千题计划140:bzoj4519: [Cqoi2016]不同的最小割
查看>>
GitHub开源项目SlidingMenu简介
查看>>
python小程序之一
查看>>
数据解析
查看>>
Spring Ioc原理
查看>>
关于深拷贝与浅拷贝的一些简单说明
查看>>
TCP三次握手和四次握手
查看>>
js 鼠标事件
查看>>
AnsiString用法(转)
查看>>
DP E - Cheapest Palindrome
查看>>
用TTL线在CFE环境下拯救半砖wrt54g路由器
查看>>
extjs grid renderer用法
查看>>
来博客园的第一篇博文
查看>>
在cmd窗口中运行php命令
查看>>
浅议约瑟夫问题
查看>>
mysql数据库之存储引擎
查看>>
【刷题】BZOJ 2734 [HNOI2012]集合选数
查看>>
【刷题】BZOJ 2287 【POJ Challenge】消失之物
查看>>