[英]Using a string where clause with PredicateBuilder in LinqPad for creating dynamic where clause
我试图在启用了PredicateBuilder的LinqPad中创建动态查询。
我首先为与“(orderid> 100 AND customerid <= 100)”之类的查询的where子句相对应创建一个字符串,然后尝试在PredicateBuilder中构建LINQ查询时使用此字符串。 动态查询由本文末尾给出的代码中的变量'dynamicResult'表示。 该查询位于SQL Server 2008 R2中的Northwind数据库的Orders表上。
当我尝试执行查询时,该查询在LinqPad中引发此错误:
无法将类型'string'隐式转换为'System.Linq.Expressions.Expression>'
问题:如何在PredicateBuilder中使用类似于'((orderid> 100 AND customerid <= 100)')字符串的过滤器? 尝试执行以下代码时,我从LinqPad中选择了“ C#语句”。
我正在尝试为LINQ查询动态构建where条件。
int? orderParam = 100;
string orderOperator = ">=";
string linqFilter = "";
linqFilter= String.Format("{0} {1} {2}", "o.OrderID", orderOperator, orderParam);
linqFilter.Dump();
var predicate = PredicateBuilder.False<Orders>();
predicate = (linqFilter);
var dynamicResult = from o in Orders.Where(predicate) select o;
dynamicResult.Dump();
好吧,尝试这样的事情。
var predicate = PredicateBuilder.False<Orders>();
predicate = predicate.And(o => o.OrderID >= 100);
var dynamicResult = from o in Orders.Where(predicate) select o;
如您所说,您使用了linqfilter字符串。 这意味着您需要动态构建表达式。 因此,这里是codeproject中的一篇好文章 。 对于您,请参阅该文章中的“动态位置”部分。 您绝对可以从该部分获得提示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.