关于C#:简单LINQ问题:将 [][] 转换为[]

Simple LinQ question: convert [][] to []

我想获取项目对象的集合或列表,但现在我得到了数组数组。

1
Item[][] s = employees.Select(e => e.Orders.Select(o => new Item(e.ID, o.ID)).ToArray()).ToArray();

有人能选择我的解决方案吗?

P.S.Just Linq解决方案:)


值得一提的是,它可以用LINQ语法更加简洁、清晰地编写:

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


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

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


看一看Enumerables.SelectMany(),看看这个堆栈溢出问题中的例子。


您要查找的扩展方法称为"selectmany":http://msdn.microsoft.com/en-en/library/system.linq.enumerable.selectmany.aspx