[英]Take all in ternary operator in LINQ?
考虑这个功能:
public List<Employees> getEmployees(....... , int? takeMax = null)
{
// some code
...
var items = DB_Context.Employees.Where(%%%%% WHATEVER %%%%).Take(takeMax.HasValue && takeMax.Value > 0 ? takeMax.Value : ?????? ).ToList();
}
如果takeMax
为NULL,我如何获取所有项目?
Take()
接受int
,我不想写类似的东西
int total = DB_Context.Employees.Count();
var items = DB_Context.Employees.Where(%%%%% WHATEVER %%%%).Take(takeMax.HasValue && takeMax.Value > 0 ? takeMax.Value : total ).ToList();
还有其他选择
你只能在这种情况下申请:
var itemsQuery = DB_Context.Employees.Where(%%%%% WHATEVER %%%%);
if (takeMax > 0)
{
itemsQuery = itemsQuery.Take(takeMax);
}
var items = itemsQuery.ToList();
这是一种方法,你仍然需要写两行(比如你的计数例子),但你不必计算Count
。
var query = DB_Context.Employees.Where(%%%%% WHATEVER %%%%);
var items = takeMax.HasValue && takeMax.Value > 0 ?
query.Take(takeMax.Value).ToList() : query.ToList();
也许是这样的:
public List<Employees> getEmployees(....... , int? takeMax = null)
{
// some code
...
if(takeMax != null)
{
return DB_Context.Employees.Where(%%%%% WHATEVER %%%%).Take(takeMax).ToList();
}
else
{
return return DB_Context.Employees.Where(%%%%% WHATEVER %%%%).ToList();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.