que tienen una estructura de clases de este modo:¿Hay una buena forma de LINQ para hacer un producto cartesiano?
Person
Dogs (dog 1, dog 2, etc)
Puppies (puppy A, puppy B, etc)
Hay una persona. Él tiene 1..n perros. Cada perro tiene 1..n cachorros.
Quiero una lista de todas las posibles combinaciones de cachorros, tomando 1 cachorro de cada perro. Por ejemplo:
perro 1 Un perrito, perro 2 del perrito Un perro 1 Un perrito, perro 2 del perrito B perro 1 cachorro B, perro 2 del perrito Un perro 1 cachorro B, perro 2 del perrito B
Si lo fue en las tablas de SQL, que haría algo como lo siguiente a 'multiplicar' las tablas:
select * from puppies a, puppies b where a.parent='dog1' and b.parent='dog2'
¿hay alguna manera de LINQ-ish para hacer esto un poco cosa ???
Gracias tanto
¡Bingo! Gracias por la ayuda. – Chris
Entonces, ¿tendría razón al decir que esta es una alternativa a la programación recursiva? –
@Nick: creo que sería más adecuado decir que esta es una alternativa a la * imperativa * programación. El objetivo de LINQ es que diga lo que quiere, programa * declarativamente * y el compilador averigua cómo hacerlo en función de las bibliotecas de tiempo de ejecución disponibles. Si esas bibliotecas hacen su trabajo usando programación recursiva o programación iterativa, ese es su negocio. –