使用扩展方法重写LINQ语句的优雅方法是什么?

时间:2010-03-30 09:11:37

标签: c# .net linq

我遵循LINQ语句,我想使用扩展方法重写它。

from x in e
from y in e
from z in e
select new { x, z }

一种可能的解决方案是:

e.Join(e, x => 42, y => 42, (x, y) => new { x, y })
  Join(e, _ => 42, z => 42, (_, z) => new { _.x, z }); 

然而,这一切都很优雅。

你知道如何提高第二种表达的美感吗?

2 个答案:

答案 0 :(得分:6)

使用Join是错误的方法IMO。

直接相当于(我认为!):

e.SelectMany(x => e.SelectMany(y => e.Select(new { y, z }),
             (x, yz) => new { x, yz.z }))

虽然我认为但它等同于:

e.SelectMany(x => e.SelectMany(y => e.Select(new { x, z })))

答案 1 :(得分:6)

e.SelectMany(x => e.SelectMany(y => e.Select(z => new { x, z })))