16

假设我需要使用动态查询过滤通用列表(List<string> l; var x = l.Where(*dynamic query*)

我将如何使用 LINQ 执行此操作?(目前在数据视图上使用行过滤器)

我看过scott g 的帖子:但它似乎不适用于使用的对象IEnumerable(包括通用列表)

任何人都可以提供任何想法吗?

4

2 回答 2

15

假设您的意思是基于字符串的查询:动态 LINQ 库可以正常工作;只需.AsQueryable()先打电话:

string s = *dynamic query*
var qry = l.AsQueryable().Where(s);

这为您的IQueryable<T>列表提供了一个包装器,它提供对动态 LINQ 扩展方法的访问。

于 2009-01-28T08:24:29.807 回答
3

您可以使用采用谓词的 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# 示例项目中。

于 2009-01-28T00:11:05.153 回答