从Collection系列中收集

时间:2012-07-02 07:19:18

标签: c# linq loops

我有List<List>。我希望从中获得一个列表。

List<int> from List<List<SomeClass>()

for循环是一个显而易见的解决方案,但我希望从性能的角度来看更好更好的东西。

List<List<Employee>> ValueLists;

List<int> Current= ValueLists.SelectMany(u=>u.Select(v=>v.EmployeeID));

3 个答案:

答案 0 :(得分:4)

试试这个:

var list = listOfLists.SelectMany(x => x).ToList();

我不确定您追加的是什么额外信息。您对该问题所做的编辑几乎是完整的代码。

你应该写:

List<int> Current =
    ValueLists
        .SelectMany(u => u.Select(v => v.EmployeeID))
        .ToList();

这可以写成:

var query =
    from u in ValueLists
    from v in u
    select v.EmployeeID;

List<int> Current = query.ToList();

也许这会更清晰。

答案 1 :(得分:0)

  

仍然没有得到答案,请参阅编辑问题了解更多信息   细节和实际情况:

List<List<Employee>> ValueLists;
List<int> Current= ValueLists.SelectMany(u=>u.Select(v=>v.EmployeeID));

您的方法不起作用,因为IEnumerable<int>不是List<int>。因此,最后需要ToList()

这应该有效:

List<int> Current = ValueLists.SelectMany(u => u.Select(e => e.EmployeeID)).ToList();

答案 2 :(得分:0)

怎么样:

var list = listOfLists.SelectMany(x => x.EmployeeID).ToList();