2011-09-11 72 views
2
 var result = from c1 in a1 
        from c2 in a1.a2 
        from c3 in a1.a2.a3 
        select new { c1.id, c2.id, c3.id }; 

這是編譯器從上面的查詢表達式生成的代碼:這是編譯器從以下查詢表達式中生成的代碼嗎?

var result = a1.SelectMany(
     c1 => a1.a2.SelectMany(
     c2 => a1.a2.a3.Select(
      c3 => new {c1,c2,c3}))); 

謝謝

+0

它編譯這些下降到IL。你可以使用像Reflector這樣的反彙編器來查看這個IL。 – Oded

+1

@Oded:但是有從查詢語法到擴展方法的各種轉換,對嗎?無論如何,OP會詢問它們是否相同。 –

+1

如果您對編譯器將要生成的代碼有任何疑問,請使用LINQPad :) –

回答

3

你是正確的。

這是一個完全外部連接,並且將包含a1.Count * a2.Count * a3.Count物品,包括從所述源序列的項目的每一種組合/

+0

謝謝你的幫助 – user702769

相關問題