<分区>
Possible Duplicate:
Nested “from” LINQ query expressed with extension methods
我确定之前有人问过这个问题,但老实说我找不到任何东西。
我很好奇以下仅使用内置 Linq 扩展方法的等效语法是什么:
var z1 =
from x in xs
from y in ys
select new { x, y };
我可以得到相同的结果:
var z2 = xs.SelectMany(x => ys.Select(y => new { x, y }));
但是会产生不同的IL代码,而且代码有点绕口难懂。有没有更简洁的方法来使用扩展方法来做到这一点?
这是我编写的整个测试方法:
private void Test()
{
var xs = new[] { 1D, 2D, 3D };
var ys = new[] { 4D, 5D, 6D };
var z1 =
from x in xs
from y in ys
select new { x, y };
var z2 = xs.SelectMany(x => ys.Select(y => new { x, y }));
}
这里是[编辑:C# interp] IL 代码(使用 ILSpy):
private void Test()
{
double[] xs = new double[]
{
1.0,
2.0,
3.0
};
double[] ys = new double[]
{
4.0,
5.0,
6.0
};
var z =
from x in xs
from y in ys
select new
{
x = x,
y = y
};
var z2 = xs.SelectMany((double x) =>
from y in ys
select new
{
x = x,
y = y
});
}