使用 LINQ 拆分集合

Posted

技术标签:

【中文标题】使用 LINQ 拆分集合【英文标题】:Splitting a collection with LINQ 【发布时间】:2011-06-29 03:50:33 【问题描述】:

我确信有一个简单的方法可以做到这一点,但我想不出...

我有一个带有组字符串字段的集合。我想做的是将该集合拆分为每个组的 (n) 个集合。我最终会得到一个类似这样的循环:

foreach (var group in groups)

   foreach (var item in group)
   
      //process item.
   

有什么指导吗???谢谢!

例如编辑:

鉴于此:

var people = new List(); people.Add(new Person FirstName = "John", LastName = "Doe" ); people.Add(new Person FirstName = "Jane", LastName = "Doe" ); people.Add(new Person FirstName = "Bob", LastName = "Barker" ); people.Add(new Person FirstName = "Billy", LastName = "Barker" ); people.Add(new Person FirstName = "Billy", LastName = "Bob" );

我想要一个包含 3 个元素的集合。元素 1 将是一群人(Does),元素 2 将是一群人(The Barkers),元素 3 将是一个比利鲍勃的集合。

【问题讨论】:

再描述一下集合元素类型。举例说明 - 示例输入和预期输出。 【参考方案1】:

也许,GroupBy 会有所帮助?

var grouped = groups.GroupBy(g => g.Group);

【讨论】:

GroupBy 是关键。谢谢!!【参考方案2】:

编辑:使其适合示例。我们按姓氏对人进行分组,遍历组,然后遍历每个组中的每个人

var groupedCollection = from person in people
                        group person by person.LastName; // or use .GroupBy()
foreach (var group in groupedCollection)

    var lastName = group.Key;
    foreach (var person in group)
    
        // do stuff with person
    

阅读更多分组示例here

【讨论】:

这似乎让我得到了不同的组名。我想隔离集合中属于组的项目。以我的编辑为例。 啊,感谢您的意见。我错误地查看了 GroupBy 操作的结果。它确实做了我想要它做的事情。 LINQ FTW!

以上是关于使用 LINQ 拆分集合的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 linq 从集合中获取特定集合?

C#规范整理·集合和Linq

为啥我不能对 Visio Masters 集合使用 Linq 查询?

使用 LINQ 对集合进行分页

使用 linq 按 id 加入集合 [重复]

Dapper 动态集合上的动态 Linq - 可能吗?