Est-il un bon LINQ moyen de faire un produit cartésien?

J'ai une structure de classe de la sorte:

Person
Dogs (dog 1, dog 2, etc)
Puppies (puppy A, puppy B, etc)

Il y a une personne. Il a 1..n les chiens. Chaque chien a 1..n chiots.

Je veux une liste de toutes les combinaisons possibles de chiots, la prise de 1 chiot de chaque chien. Par exemple:

chien 1 chiot, chien 2 chiot
chien 1 chiot, chien 2 chiot B
chien 1 chiot B, chien 2 chiot
chien 1 chiot B, chiens 2 chiots B

Si elle était dans les tables sql, je ferais quelque chose comme la suite de "multiplier" les tables:

select * from puppies a, puppies b where a.parent='dog1' and b.parent='dog2'

Est-il une linq-ish façon de faire ce genre de chose???

Merci beaucoup

InformationsquelleAutor Chris | 2010-11-01