Linq来自使用SelectMany的多个列表

时间:2011-04-04 21:49:47

标签: linq-to-objects

我可以使用以下代码从我的收藏中返回一个分组的项目列表:

var items = collection.SelectMany(myObj => myObj.ToNames)
    .GroupBy(name => name)
    .Select(g => new { Name = g.Key, Count = g.Count() });

上面的代码为我提供了一个很好的唯一名称列表以及它们在集合中找到的次数。我现在需要做同样的事情,但是从同一个MyObj中找到的两个单独的集合中对Names进行分组。我现在想以相同的方式对myObj.ToNames和myObj.FromNames进行分组 - 同时获取找到的每个唯一名称的总体唯一计数(无论在哪个集合中找到它)。

这可能吗?

1 个答案:

答案 0 :(得分:3)

联:

var items = collection.SelectMany(myObj => myObj.ToNames.Union(myObj.FromNames))
    .GroupBy(name => name)
    .Select(g => new { Name = g.Key, Count = g.Count() });

的毗连:

var items = collection.SelectMany(myObj => myObj.ToNames.Concat(myObj.FromNames))
    .GroupBy(name => name)
    .Select(g => new { Name = g.Key, Count = g.Count() });