我的印象是,我可以創建一個LINQ查詢,然後在改變參數時重用它。但似乎你不能改變源代碼集合。有人可以給我一個很好的解釋,爲什麼,因爲我明顯誤解了一些根本性的東西。LINQ查詢重用和延期執行
以下是一些示例代碼。
var source = Enumerable.Range(1, 10);
var value = source.Where(x => x > 5);
var first = value.ToArray();
source = Enumerable.Range(11, 20);
var second = value.ToArray();
我期待第一次是6,7,8,9,10和第二把要了11至20
感謝jimmy和肯德爾,我會嘗試和詳細解答一下在e在LINQ下面的g產生一個由值變量引用的WhereArrayIterator。這包含對源數組和謂詞的引用。所以你可以更新源數組,這反映在結果中。但是,當我將源變量更改爲新數組時,這不會影響WhereArrayIterator中的引用。因此,WhereArrayIterator中的ref直接指向原始源數組,而不是它最初聲明的源變量。哪些是標準的東西。 – Youngs 2012-07-20 08:41:57