2011-04-17 42 views
2

我想讓我的用戶編寫和執行linq查詢。 爲此,我需要一個linq解析器。這個解析器只會理解linq表達式,而不是完整的C#語言。我在哪裏可以找到LinQ解析器

因此,例如,如果我們有 類,請訂購 public int OrderId; } 名單列表= ...

的用戶應該能夠在UI 進入 「列表中,其中p.OrderId> 2選擇P」; 並且這將返回orderId> 2的訂單。

它存在嗎?

回答

-1

您可以創建自己的LINQ提供,這裏的a walk through on MSDN

+0

這聽起來像你可能想要實現自己的LINQ _provider_。這已經在之前的stackoverflow上進行了介紹;看到[這個線程](http://stackoverflow.com/questions/174585/best-open-source-linq-provider)。谷歌搜索「LINQ提供商」也出現了很多其他的例子。 – 2011-04-17 04:42:44

+0

它如何回答我的問題?我仍然需要編寫解析器 – user380719 2011-04-17 04:58:42

+0

這就是要點,你不需要,你實現了一個IQueryable提供程序,並且你可以獲得Linq解析「免費」 – Jason 2011-04-17 05:29:22

1

做到這一點是最快捷的方法:

  1. 嵌入表達成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; } 
        } 
    } 
    
  2. 調用文件上的C#編譯器。

  3. 載入生成的程序集。
  4. 訪問屬性
  5. 使用Linq樹來記錄您的內容。

作爲一個副產品,你會得到類型檢查和一堆其他的東西。唯一的缺點是你需要很好地理解查詢執行的環境;如果你想要做的事情之一是瞭解環境,那麼這對你並沒有多大幫助。

相關問題