¿Cómo realizar una combinación CRUZADA con LINQ to SQL?
-
09-06-2019 - |
Pregunta
¿Cómo realizar una combinación CRUZADA con LINQ to SQL?
Solución
Una combinación cruzada es simplemente el producto Cartesiano de dos conjuntos.No hay ninguna explícita operador de combinación para ella.
var combo = from p in people from c in cars select new { p.Name, c.Make, c.Model, c.Colour };
Otros consejos
Lo mismo con linq
los métodos de extensión:
var names = new string[] { "Ana", "Raz", "John" };
var numbers = new int[] { 1, 2, 3 };
var newList=names.SelectMany(
x => numbers,
(y, z) => { return y + z + " test "; });
foreach (var item in newList)
{
Console.WriteLine(item);
}
Basado en Steve respuesta, la expresión más simple sería este:
var combo = from Person in people
from Car in cars
select new {Person, Car};
Un Tuple
es un buen tipo de producto Cartesiano:
public static IEnumerable<Tuple<T1, T2>> CrossJoin<T1, T2>(IEnumerable<T1> sequence1, IEnumerable<T2> sequence2)
{
return sequence1.SelectMany(t1 => sequence2.Select(t2 => Tuple.Create(t1, t2)));
}
Método De Extensión:
public static IEnumerable<Tuple<T1, T2>> CrossJoin<T1, T2>(this IEnumerable<T1> sequence1, IEnumerable<T2> sequence2)
{
return sequence1.SelectMany(t1 => sequence2.Select(t2 => Tuple.Create(t1, t2)));
}
Y utilizar como:
vals1.CrossJoin(vals2)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow