2010-04-15 80 views
3

我想获得Item对象的集合或列表,但我现在获取数组数组。简单的LinQ问题:将[] [] []转换为[]

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

任何人都可以选择我的解决方案吗?

P.S.只是LinQ在解决:)

回答

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'应有一个“员工”的参考,并且不需要“项目”。 – 2010-04-15 11:43:19

+0

+1。请注意,该语法实际上已转换为SelectMany。使用任何你发现更可读的东西。生成的代码完全相同。 – Niki 2010-04-15 14:57:16