Duplicar posibles:
Nested “from” LINQ query expressed with extension methodsNiza cruz, limpio unirse en LINQ utilizando únicamente métodos de extensión
Estoy seguro de que esto se ha hecho antes, pero sinceramente no pude encontrar nada .
Tengo curiosidad ¿cuál sería la sintaxis equivalente para el siguiente utilizando sólo una función de los métodos de extensión LINQ:
var z1 =
from x in xs
from y in ys
select new { x, y };
puedo obtener los mismos resultados con este:
var z2 = xs.SelectMany(x => ys.Select(y => new { x, y }));
Pero produce diferentes códigos IL, y el código es un poco intrincado y difícil de entender. ¿Hay una manera más limpia de hacer esto con los métodos de extensión?
Aquí es toda mi método de prueba como está escrito:
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 }));
}
Aquí está la [Editar: C# interp del] Código IL (usando 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
});
}
eh, ese no es el código il? –
Parece una interpretación C# del desmontaje en lugar de IL. –
Eric Lippert respondió más o menos a la misma pregunta hoy aquí: http://stackoverflow.com/questions/9115675/nested-from-linq-query-expressed-with-extension-methods/9117009#9117009 – hvd