在 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();
考虑这个函数:
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();