我想讓我的用戶編寫和執行linq查詢。 爲此,我需要一個linq解析器。這個解析器只會理解linq表達式,而不是完整的C#語言。我在哪裏可以找到LinQ解析器
因此,例如,如果我們有 類,請訂購 public int OrderId; } 名單列表= ...
的用戶應該能夠在UI 進入 「列表中,其中p.OrderId> 2選擇P」; 並且這將返回orderId> 2的訂單。
它存在嗎?
我想讓我的用戶編寫和執行linq查詢。 爲此,我需要一個linq解析器。這個解析器只會理解linq表達式,而不是完整的C#語言。我在哪裏可以找到LinQ解析器
因此,例如,如果我們有 類,請訂購 public int OrderId; } 名單列表= ...
的用戶應該能夠在UI 進入 「列表中,其中p.OrderId> 2選擇P」; 並且這將返回orderId> 2的訂單。
它存在嗎?
您可以創建自己的LINQ提供,這裏的a walk through on MSDN
做到這一點是最快捷的方法:
嵌入表達成C#文件,將生成將返回的方法查詢爲Expression>;例如,對於
from x in Foos select x.Y
您可能會發出:
class Wrapper {
IEnumerable<blah> Foos;
public static Expression<Func<object>> Expr {
get { return from x in Foos select x.Y; }
}
}
調用文件上的C#編譯器。
作爲一個副產品,你會得到類型檢查和一堆其他的東西。唯一的缺點是你需要很好地理解查詢執行的環境;如果你想要做的事情之一是瞭解環境,那麼這對你並沒有多大幫助。
這聽起來像你可能想要實現自己的LINQ _provider_。這已經在之前的stackoverflow上進行了介紹;看到[這個線程](http://stackoverflow.com/questions/174585/best-open-source-linq-provider)。谷歌搜索「LINQ提供商」也出現了很多其他的例子。 – 2011-04-17 04:42:44
它如何回答我的問題?我仍然需要編寫解析器 – user380719 2011-04-17 04:58:42
這就是要點,你不需要,你實現了一個IQueryable提供程序,並且你可以獲得Linq解析「免費」 – Jason 2011-04-17 05:29:22