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

Можете ли вы объединить несколько списков с LINQ?

Скажем, у меня есть два списка:

var list1 = new int[] {1, 2, 3};
var list2 = new string[] {"a", "b", "c"};

Можно ли написать оператор LINQ, который будет генерировать следующий список:

var result = new []{ 
    new {i = 1, s = "a"},
    new {i = 1, s = "b"},
    new {i = 1, s = "c"},
    new {i = 2, s = "a"},
    new {i = 2, s = "b"},
    new {i = 2, s = "c"},
    new {i = 3, s = "a"},
    new {i = 3, s = "b"},
    new {i = 3, s = "c"}
};

?

Изменить: я забыл упомянуть, что я не хотел этого в синтаксисе запроса. В любом случае, на основе ответа preetsangha у меня есть следующее:

var result = list1.SelectMany(i =>  list2.Select(s => new {i = i, s = s}));
4b9b3361

Ответ 1

preetsangha ответ полностью правильный, но если вы не хотите выражения запроса, то это:

var result = list1.SelectMany(l1 => list2, (l1, l2) => new { i = l1, s = l2} );

(Что компилятор компилирует выражение запроса в - они идентичны.)

Ответ 2

var result = from l1 in list1
             from l2 in list2       
             select new { i = l1, s = l2};