C# 在LinqPad中使用带PredicateBuilder的字符串where子句创建动态where子句

C# 在LinqPad中使用带PredicateBuilder的字符串where子句创建动态where子句,c#,linq,sql-server-2008-r2,linqpad,C#,Linq,Sql Server 2008 R2,Linqpad,我正在尝试在启用PredicateBuilder的LinqPad中创建一个动态查询 我首先为一个查询创建一个与where子句相对应的字符串,如“(orderid>100和customerid” 问题:如何使用字符串形式的过滤器?(orderid>100和customerid好的,试试这样的方法 var predicate = PredicateBuilder.False<Orders>(); predicate = predicate.And(o => o.OrderID

我正在尝试在启用PredicateBuilder的LinqPad中创建一个动态查询

我首先为一个查询创建一个与where子句相对应的字符串,如“(orderid>100和customerid”


问题:如何使用字符串形式的过滤器?(orderid>100和customerid好的,试试这样的方法

 var predicate = PredicateBuilder.False<Orders>();
 predicate = predicate.And(o => o.OrderID >= 100);
 var dynamicResult = from o in Orders.Where(predicate) select o;
var predicate=PredicateBuilder.False();
谓词=谓词和(o=>o.OrderID>=100);
var dynamicResult=顺序中的从o开始。其中(谓词)选择o;

正如您所说,您使用了linqfilter字符串。这意味着您需要动态构建表达式。为此,这里有一个。您可以参考“动态Where”那篇文章中的一节。你肯定从那节中得到了提示。

我想,PredicateBuilder需要一个
IQueryable
。所以试试这一行-
var dynamicResult=from o in Orders.AsQueryable()。其中(谓词)选择o;
。只要检查一下,让我们知道……我想问题出在这一行:谓词=(linqFilter),其中右侧变量是一个被分配给另一种类型的字符串。你知道如何解决这个问题吗?我想在PredicateBuilder的代码段中使用类似linqFilter的字符串。在你的示例中,你没有使用字符串,而是使用表达式。@Sunil:我已经更新了我的答案…只需阅读那篇文章。
 var predicate = PredicateBuilder.False<Orders>();
 predicate = predicate.And(o => o.OrderID >= 100);
 var dynamicResult = from o in Orders.Where(predicate) select o;