繁体   English   中英

在LINQ中使用所有三元运算符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM