2011-09-11 6 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

関連する問題