我想在啓用PredicateBuilder的LinqPad中創建動態查詢。在LinqPad中使用PredicateBuilder中的where子句用於創建動態Where子句
我首先創建一個字符串,對應於像'(orderid> 100和customerid < = 100)'這樣的查詢的where子句,然後嘗試在構建PredicateBuilder的LINQ查詢時使用此字符串。動態查詢由本帖末尾的代碼給出的變量'dynamicResult'表示。該查詢位於SQL Server 2008 R2中Northwind數據庫的Orders表上。
查詢拋出LinqPad這個錯誤,當我嘗試執行它:
不能鍵入 '串' 隱式轉換爲 '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();
我想,PredicateBuilder需要'IQueryable'。所以試試這一行 - 'var dynamicResult = from Orders.AsQueryable()。where(predicate)select o;'。只需檢查並讓我們知道... –
2014-09-06 18:32:39
我認爲問題出現在這條線上:predicate =(linqFilter),其中右側變量是一個字符串被分配給另一個類型。你知道如何解決這個問題嗎? – Sunil 2014-09-06 18:39:36