我試圖在我鏈接linq方法時,特別是在多次鏈接相同方法時,繞過C#編譯器執行的操作。瞭解C#編譯器如何處理鏈接linq方法
簡單示例:假設我試圖根據兩個條件篩選一個整數序列。
最明顯的事情是這樣的:
IEnumerable<int> Method1(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0 && i % 5 == 0);
}
但我們可以也鏈條,其中的方法,在每一個條件:
IEnumerable<int> Method2(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0).Where(i => i % 5 == 0);
}
我有一個在Reflector中查看IL;這是兩種方法明顯不同,但進一步分析它超出了我的知識,此刻:)
我想了解一下:
一)編譯器在每個實例做什麼不同,爲什麼。
B)是否有任何性能問題(不是要微觀優化;!只是好奇)
好的答案。我們需要更多像Stackoverflow這樣的材料。 – 2010-11-12 03:53:07