У меня есть структура класса, как так:Есть ли способ LINQ сделать декартовой продукт?
Person
Dogs (dog 1, dog 2, etc)
Puppies (puppy A, puppy B, etc)
Существует один человек. У него есть 1..n собаки. У каждой собаки есть 1..n щенки.
Я хочу составить список всех возможных комбинаций щенков, взяв 1 щенка от каждой собаки. Например:
собака 1 щенок А, собака 2 щенка собаки 1 щенок А, собака 2 щенка Б собаки 1 щенок Б, собака 2 щенка собаки 1 щенок Б, собака 2 щенка Б
Если это было в SQL таблиц, я хотел бы сделать что-то вроде следующего, чтобы «умножить» таблицы:
select * from puppies a, puppies b where a.parent='dog1' and b.parent='dog2'
есть некоторые LINQ-иш способ сделать это любопытное дело ???
Большое спасибо
Бинго! Спасибо за помощь. – Chris
Так было бы правильно сказать, что это альтернатива рекурсивному программированию? –
@Nick: Я думаю, было бы более разумно сказать, что это альтернатива * императивному программированию. Точка LINQ - это то, что вы говорите, что хотите - вы программно декларативно *, а компилятор определяет, как это сделать на основе доступных библиотек времени исполнения. Если эти библиотеки выполняют свою работу с использованием рекурсивного программирования или итеративного программирования, это их бизнес. –