[英]Include or exclude where clause in Linq to Sql c# function
問題是我有UI,用戶可以選擇位置和工作,但他們可能會在兩個下拉菜單中都選擇All,如果emplId = 0
的值和jobId相同,則下面的linq應該忽略where子句,我知道該怎么做如果EmplId = 0,則使用正常的方法//這樣做,但是我想知道是否有更干凈的方法可以做到這一點。
public IEnumerable<employees> GetByEmployeIdAndJobId(int EmpId, int JobId)
{
if (EmplId > 0 && JobId > 0){
var employees= (from e in Table.Employees
where e.employeeId == EmplId && e.JobId == JobId
select e).ToList()
}
else
{ var employees= (from e in Table.Employees
select e).ToList()
}
}
我猜你的else部分不包含where子句:
IEnumerable<employees> employees = Table.employees;
if (EmplId > 0 && JobId > 0)
{
employees = employees.Where(e => (e.employeeId == EmplId && e.JobId == JobId));
}
employees = employees.ToList();
並分別處理EmpID和JobId:
IEnumerable<employees> employees = Table.employees;
if (EmplId > 0)
{
employees = employees.Where(e => (e.employeeId == EmplId));
}
if (JobId > 0)
{
employees = employees.Where(e => (e.JobId == JobId));
}
employees = employees.ToList();
我猜您可以使用PredicateBuilder
構建一個謂詞,以處理用戶可以選擇的所有方案,例如:
public IEnumerable<Employee> GetByEmployeIdAndJobId(int empId, int jobId)
{
var predicate = PredicateBuilder.True<Employee>();
if(empId > 0)
predicate = predicate.And(e => e.EmployeeId == empId);
if(jobId > 0)
predicate = predicate.And(e => e.JobId == jobId);
return Table.Employees.Where(predicate).ToList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.