LINQ问题:将查询表达式映射到c#代码

Ric*_*cky 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>();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 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>();
Run Code Online (Sandbox Code Playgroud)

"z"和"z2"位是透明标识符,由C#编译器用于通过查询传播多个范围变量.

你可能想下载LINQPad,我相信你可以很容易地翻译这样的查询表达式.