Say I have two lists:
var list1 = new int[] {1, 2, 3}; var list2 = new string[] {'a', 'b', 'c'};
Is it possible to write a LINQ statement that will generate the following list:
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'} };
?
Edit: I forgot to mention I didn’t want it in query syntax. Anyway, based on preetsangha’s answer I’ve got the following:
var result = list1.SelectMany(i => list2.Select(s => new {i = i, s = s}));
preetsangha’s answer is entirely correct, but if you don’t want a query expression then it’s:
(That’s what the compiler compiles the query expression into – they’re identical.)