c# – 动态LINQ中的条件

前端之家收集整理的这篇文章主要介绍了c# – 动态LINQ中的条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个场景,我必须在LINQ中使用一个动态的条件.

我想要这样的东西:

public void test(bool flag)
{
   from e in employee
   where e.Field<string>("EmployeeName") == "Jhom"
   If (flag == true)
   {
       e.Field<string>("EmployeeDepartment") == "IT"
   }
   select e.Field<string>("EmployeeID")
}

我知道我们不能在Linq查询的中间使用“If”,但是这样做的解决方案是什么?

请帮忙…

解决方法

所以,如果flag是false,那么你需要所有Jhoms,如果flag是true,那么只需要IT部门的Jhoms

这个条件

!flag || (e.Field<string>("EmployeeDepartment") == "IT"

满足该标准(如果标志为false,则始终为真),因此查询将变为:

from e in employee    
where e.Field<string>("EmployeeName") == "Jhom"
  && (!flag || (e.Field<string>("EmployeeDepartment") == "IT")
select e.Field<string>("EmployeeID")

同样,这个e.Field< string>(“EmployeeID”)业务,闻起来像softcoding,可能会考虑一下.我猜

from e in employee    
where e.EmployeeName == "Jhom"
  && (!flag || (e.EmployeeDepartment == "IT")
select e.EmployeeID

会更紧凑,更不容易输入错误.

编辑:这个答案适用于这个特定场景.如果你有很多这样的查询,一切都意味着投资其他答案中提出的模式.

猜你在找的C#相关文章