C# 你能用LINQ组合多个列表吗?

C# 你能用LINQ组合多个列表吗?,c#,.net,linq,C#,.net,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,

假设我有两个列表:

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}));

preetsangha的答案完全正确,但如果您不想要查询表达式,那么它是:

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

(这就是编译器将查询表达式编译成的内容-它们是相同的。)

查询语法有什么问题吗?是的,奇怪的是,当preetsangha第一次进入时,你会选择Jon的回复作为答案,并且有相同代码的另一个版本(对Jon来说是适当的)。如果我可以选择两者,我会选择。至于不喜欢查询语法,我就是不喜欢。它感觉是错误的,因为它不适合C#,并且不是LINQ中的所有新内容都可以在查询语法中使用,如ToList()等;
var result = list1.SelectMany(l1 => list2, (l1, l2) => new { i = l1, s = l2} );