【问题标题】:Splitting a collection with LINQ使用 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 将是一个比利鲍勃的集合。

【问题讨论】:

  • 再描述一下集合元素类型。举例说明 - 示例输入和预期输出。

标签: c# linq


【解决方案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!
猜你喜欢
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多