假设我需要使用动态查询过滤通用列表(List<string> l; var x = l.Where(*dynamic query*)
)
我将如何使用 LINQ 执行此操作?(目前在数据视图上使用行过滤器)
我看过scott g 的帖子:但它似乎不适用于使用的对象IEnumerable
(包括通用列表)
任何人都可以提供任何想法吗?
假设我需要使用动态查询过滤通用列表(List<string> l; var x = l.Where(*dynamic query*)
)
我将如何使用 LINQ 执行此操作?(目前在数据视图上使用行过滤器)
我看过scott g 的帖子:但它似乎不适用于使用的对象IEnumerable
(包括通用列表)
任何人都可以提供任何想法吗?
假设您的意思是基于字符串的查询:动态 LINQ 库可以正常工作;只需.AsQueryable()
先打电话:
string s = *dynamic query*
var qry = l.AsQueryable().Where(s);
这为您的IQueryable<T>
列表提供了一个包装器,它提供对动态 LINQ 扩展方法的访问。
您可以使用采用谓词的 FindAll() 方法。这是一个基本的例子。
List<string> stringList = new List<string>(new string[]{"Smith", "Johnson", "Jordan","Doe"});
List<string> filteredStringList = stringList.FindAll(x => x == "Smith");
Find 方法也返回单个项目。
MSDN 上还有一个示例项目,用于在 IEnumerable 和 IQueryable 上执行动态 LINQ 查询。您可以从中重用 DynamicQueryable 类。这是链接。该项目位于 C# 示例项目中。