【问题标题】:Filter a generic list with a dynamic condition string with linq使用 linq 过滤具有动态条件字符串的通用列表
【发布时间】:2014-08-26 11:06:08
【问题描述】:

我正在使用 .NET 3.5

我有一个 Company.cs 对象列表。

我想用 LINQ 动态过滤这个列表,这意味着用户在文本框中输入这个字符串:

(CompanyName = "Google") OR 
(Country = "Czech Republic") or
 (CompanyName = "Microsoft") AND
 (Country = "USA")

如何将此字符串与 linq 和 .Where() 子句一起使用来过滤现有的公司对象?

还是使用 DataTable 并使用 Select 方法更好?

【问题讨论】:

  • 这似乎是一个令人讨厌的 UI 设计,需要用户输入那种复杂程度......不是吗?
  • 考虑修改你的用户界面,使用多个文本框和/或一些下拉菜单,每个都用于过滤一个字段。

标签: c# linq


【解决方案1】:

查看Dynamic LINQ library

编辑:

对不起,我误会你了。

如果您有以下公司和国家/地区列表:

var compNames = new[] { "Boo", "Foo" };
var countries = new[] { "Germany", "Bubu" };

然后你可以像这样过滤:

from c in companies 
where compNames.Contains(c.Name) || countries.Contains(c.Country)
select c

【讨论】:

  • 他需要对编译时已知的类型执行特定的 Where 过滤器,那么他为什么需要 Dynamic LINQ 呢?
  • @SirajMansour YES 和 NO... 正如我所说的,条件是用户定义的字符串,可能是知道 sql 的顾问...我想将 LINQ 与此动态字符串和 Dynamic Linq 一起使用图书馆看起来不错!
猜你喜欢
  • 2016-06-03
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多