Есть ли хороший способ LINQ для создания декартовых произведений?

У меня есть такая структура классов:

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

Есть один человек. У него 1..n собак. У каждой собаки 1..n щенков.

Мне нужен список всех возможных комбинаций щенков, беря по 1 щенку от каждой собаки. Например:

собака 1 щенок A, собака 2 щенок A кобель 1 щенок А, кобель 2 щенок Б кобель 1 щенок Б, кобель 2 щенок А собака 1 щенок B, собака 2 щенок B

Если бы это было в таблицах sql, я бы сделал что-то вроде следующего, чтобы "умножить" таблицы:

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

Есть ли какой-нибудь linq-ish способ сделать это? ??

Большое спасибо

56
задан user2771704 12 October 2015 в 13:27
поделиться