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

时间:2010-12-06 09:52:17

标签: 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 个答案:

答案 0 :(得分: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 :(得分:1)

嗯,除了您的代码已经 C#代码这一显而易见的事实......

我假设你想获得实际的Enumerable方法调用?如果是这样,你可以编译它并将其扔进Reflector