Как взять декартовое соединение двух списков в С#?
Как взять декартовое объединение двух списков с целыми числами в них?
Можно ли это сделать с помощью linq?
Ответ 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 });