在 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();

可能是这样的:

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();
}

这是一种方法,您仍然需要写两行(就像您计算计数的示例),但您不必计算 Count.

var query = DB_Context.Employees.Where(%%%%% WHATEVER %%%%);
var items = takeMax.HasValue && takeMax.Value > 0 ? 
                query.Take(takeMax.Value).ToList() : query.ToList();