2012-02-03 52 views
1

說我有一個LINQ到XML查詢產生一個匿名類型是這樣的:將LINQ查詢存儲爲變量/常量?

var aQuery = 
       (from a in document.Root.Elements("items") 
       select new { 
        id = a.Attribute("id").Value, 
        type = a.Attribute("type").Value, 
        modified = a.Attribute("modified").Value 
       }); 

是否存在於存儲在一個變量或常數,查詢表達式,然後在運行時執行的方法嗎?基本思想是我有一堆這些表達式,如果它們都可以在一個地方定義,然後通過一個只需要傳入XML文檔和要使用的表達式的單一方法來動態調用,那將很方便。謝謝。

+2

「如果有方法將該查詢表達式存儲在變量或常量中,然後在運行時執行?」你已經做了它,通過將查詢存儲在一個變量中... – user1096188 2012-02-03 17:20:07

+1

我認爲你錯過了這一點。顯然,它可以作爲局部變量存儲,否則Linq中的任何內容都不會按照它的方式工作。但是你不能定義類型'var'的類級別變量,這是我在 – snappymcsnap 2012-02-03 17:49:07

+0

駕駛的車型,我可以看到問題可能被誤解的地方,但我一直在尋找OP的內容,從而理解它。 – aaaaaa 2017-08-20 15:20:54

回答

3

雖然您可以設置使用匿名類型的權限,但您可以將它們定義爲方法很容易。

public static IQueryable<Item> GetItemsFromXml(XDocument document) 
{ 
    return (from a in document.Root.Elements("items") 
      select new Item 
      { 
       Id = a.Attribute("id").Value, 
       Type = a.Attribute("type").Value, 
       Modified = a.Attribute("modified").Value 
      }); 
} 

話雖如此,像存儲庫模式圖案用於包裹訪問數據的整個過程。

+0

是的,不幸的是它需要是匿名的......它沒什麼大不了的,我主要是爲了組織目的而努力,謝謝 – snappymcsnap 2012-02-03 20:12:41