【问题标题】:Dynamic LINQ on IEnumerable?IEnumerable 上的动态 LINQ?
【发布时间】:2009-01-27 23:56:08
【问题描述】:

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

我将如何使用 LINQ 做到这一点? (目前在数据视图上使用行过滤器)

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

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

【问题讨论】:

    标签: .net linq ienumerable


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您可以使用带有谓词的 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 类。这是link。该项目位于 C# 示例项目中。

      【讨论】:

        猜你喜欢
        • 2010-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-14
        • 1970-01-01
        相关资源
        最近更新 更多