我有一個列表,作爲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更少?
謝謝。
你需要顯示你在查詢中正在做什麼。就目前而言,您所展示的內容不會在任何情況下拋出,因爲您從不遍歷查詢。 – jason
下一步是迭代。我把結果放到一個Dictionary中。 –
@康迪沒有再生! http://ideone.com/RG6Pz –