Подтвердить что ты не робот

Как взять декартовое соединение двух списков в С#?

Как взять декартовое объединение двух списков с целыми числами в них?

Можно ли это сделать с помощью linq?

4b9b3361

Ответ 1

Предполагая, что вы имеете в виду "кросс-соединение" или "декартовое соединение":

var query = from x in firstList
            from y in secondList
            select new { x, y }

Или:

var query = firstList.SelectMany(x => secondList, (x, y) => new { x, y });

Если вы хотите что-то еще (как вы можете видеть из комментариев, термин "перекрестный продукт" вызвал некоторую путаницу), пожалуйста, отредактируйте свой вопрос соответствующим образом. Пример будет очень удобен:)

Ответ 2

Для любопытства другой способ выполнить это (который дает тот же результат, что и ответ Джона Скита):

firstList.Join(secondList, x => true, y => true, (m, n) => new { m, n });

Ответ 3

Если вы не любите синтаксис запроса (как и я), MoreLINQ предоставляет метод, который, на мой взгляд, более чистый:

using MoreLinq;

// ....

firstList.Cartesian(secondList, (x, y) => new { x, y });