【问题标题】:using linq query with stringBuilder使用带有 stringBuilder 的 linq 查询
【发布时间】:2011-10-15 10:49:03
【问题描述】:

我想在 LINQ 查询中创建动态 where 子句。我有一个字符串生成器 sb 具有附加值 Country=null || City=null || State=null 和一个数据表,其中包含名为 Name、Lastname、Country、City、State 的列。我想将sb 值与数据表列进行比较并获取空/空行。

所以我想要一个这样的 LINQ 查询:

var query = from p in datatable.AsEnumerable()
            where sb.tostring() // ------------error
            select p 

但它返回一个错误。我该如何解决这个问题?

【问题讨论】:

  • 我认为你做不到。您要做的是“评估”字符串。你不能在 C# 中轻松地做到这一点(我会注意到你会在你的计算机上获取所有表,然后才过滤它,所以如果表很大,你会“杀死”sql server :-))
  • 如果你真的想实现你的“eval”函数,这可能是一个好的开始:ckode.dk/programming/eval-in-c-yes-its-possible

标签: linq linq-to-sql linq-to-objects


【解决方案1】:

您可以使用Dynamic Linq

var query = datatable.Where("Country==null || City==null || State==null");

您需要下载并在链接中包含 C# 文件并添加:

using System.Linq.Dynamic;

【讨论】:

    【解决方案2】:

    您不能在 LINQ 中这样做。动态 LINQ 可能会对您有所帮助,但这可能不是最适合您的解决方案。

    为什么要将查询创建为字符串?您可以动态构建查询本身。看看PredicateBuilder

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 2014-12-01
      相关资源
      最近更新 更多