2011-07-18 42 views
2

我有一個列表,作爲IN運算符的來源。典型的linq-to-sql查詢:類成員變量和「不支持查詢與本地收藏」

public void foo() 
{ 
    var inThisListOnly = new string[] { "VA", "MA" }; 

    var result = (
     from o in Orders 
     where inThisListOnly.Contains(o.State) 
     select o 
    ) 
    .ToDictionary(o => o.Id, o => o); 
} 

一切工作正常。我想通過將inThisListOnly移到foo之外來成爲該類的成員變量來節省幾個CPU週期。

public class FooClass 
{ 
    private readonly string[] _inThisListOnly = new string[] { "VA", "MA" }; 

    public void foo() 
    { 
     var result = (
      from o in Orders 
      where _inThisListOnly.Contains(o.State) 
      select o 
     ) 
     .ToDictionary(o => o.Id, o => o); 
    } 
} 

修改後,我的程序開始拋出臭名昭着的「不支持本地集合的查詢」異常。有人會對這種行爲提供解釋嗎?從某種意義上說,不是_inThisListOnly本地比inThisListOnly更少?

謝謝。

+0

你需要顯示你在查詢中正在做什麼。就目前而言,您所展示的內容不會在任何情況下拋出,因爲您從不遍歷查詢。 – jason

+0

下一步是迭代。我把結果放到一個Dictionary中。 –

+0

@康迪沒有再生! http://ideone.com/RG6Pz –

回答

0

訂單集合的類型是什麼?它是本地enumerable或LINQ到SQL提供表嗎?

+0

訂單是一個LINQ到SQL提供的表 - DatabaseContext.Orders。 –

+0

我沒有設法重現你的錯誤:(一切運行良好 – Mic

+0

這個問題上有現有的主題...檢查它們! – Mic