2010-12-06 18 views
0

次のクエリ式を対応するC#コードに変換するにはどうすればよいですか?ありがとう。LINQ質問:クエリ式をC#コードにマップ

 var list1 = (from ol in orderedList 
        from er in ol.Er 
        from rd in er.Rd 
        where rd.ftr != "" 
        select ol).ToList<CRInfo>(); 
+2

Um ...これはC#コードです。 – spender

+0

これはまさにC#コードです – ratty

答えて

6

var list1 = orderedList.SelectMany(ol => ol.Er, (ol, er) => new { ol, er }) 
         .SelectMany(z => z.er.Rd, (z, rd) => new { z, rd }) 
         .Where(z2 => z2.rd.frt != "") 
         .Select(z2 => z2.z.ol) 
         .ToList<CRInfo>(); 

「Z」および「Z2」のビットは、クエリを介して複数の範囲変数を伝播するC#コンパイラによって使用される透明識別子、です。

LINQPadをダウンロードして、このようなクエリ式を非常に簡単に翻訳できると思うかもしれません。

1

まあ、脇

...あなたのコードが既に C#コードであることを明白な事実から、私はあなたが実際の列挙メソッド呼び出しを取得したいと仮定しますか?もしそうなら、それをコンパイルしてReflectorに投げてください。それはこのような何かに変換でしょう