Можно ли перечислить для всех перестановок двух IEnumerables, используя linq - PullRequest
4 голосов
/ 13 апреля 2010

Я мог бы сделать это, используя циклы, но есть ли способ взять два IEnumerables, перечислить все возможные перестановки и выбрать объект, который содержит перестановку? Я чувствую, что это «должно» быть возможно, но я не совсем уверен, какие операторы использовать.

Спасибо Джеймс

Ответы [ 2 ]

8 голосов
/ 13 апреля 2010

Вы говорите о том, что в основном является декартовым соединением? Вы можете сделать что-то вроде

var query = from item1 in enumerable1
            from item2 in enumerable2
            select new { Item1 = item1, Item2 = item2 }
5 голосов
/ 13 апреля 2010

Ответ Энтони правильный. Эквивалент метода расширения:

var query = enumerable1.SelectMany(
                x => enumerable2,
                (item1, item2) => new { Item1 = item1, Item2 = item2 }
            );

или

var query = enumerable1.SelectMany(
                item1 => enumerable2.Select(item2 => 
                    new { Item1 = item1, Item2 = item2 });
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...