简单的LinQ问题:将[][]转换为[]

3
我想要获取Item对象的集合或列表,但现在我得到的是数组的数组。
Item[][] s = employees.Select(e => e.Orders.Select(o => new Item(e.ID, o.ID)).ToArray()).ToArray();

有人能为我选择一个解决方案吗?

P.S. 只需要 LinQ 解决方案 :)

4个回答

5

您需要使用 SelectMany 来连接结果集。

var items = employees.SelectMany(e => e.Orders.Select(o => new Item(e.ID, o.ID)));

5

值得一提的是,这个可以用LINQ语法更加简洁和清晰地写出来:

var s = from e in employees
        from o in e.Orders
        select new Item(e.ID, o.ID);

1
虽然我同意这个观点,但是与其改变使用的语法,我认为Orders应该有一个对Employee的引用,而不需要Item - Nick Larsen
请注意,这个语法实际上被翻译成了SelectMany。使用您认为更易读的任何内容。生成的代码完全相同。 - Niki

3

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接