C#LINQ分组问题

时间:2011-03-31 16:08:36

标签: c# linq

我有一个对象,结构如下

public MyObject{
    int SomeNumber {get;set;}
    Object SomeObject {get;set;}
    Object SomeOtherObject {get;set;}
}

现在SomeNumber并不是唯一的,如果我有一个IEnumerable我如何提取所有具有相同SomeNumber值的IEnumerable<MyObject>

我认为我需要使用GroupBy来做到这一点?但似乎无法做到正确。

编辑:我不知道SomeNumber是什么。

3 个答案:

答案 0 :(得分:5)

除非你想制作一组,否则不需要GroupBy

IEnumerable<MyObject> myEnumerable ...
myEnumerable.Where(o => o.SomeNumber == value);

答案 1 :(得分:2)

IEnumerable<MyObject> source = something;
var grouped = source.GroupBy(s => s.SomeNumber);

答案 2 :(得分:2)

var myObjects = new List<MyObject>(); // fill        

var groups = from item in myObjects group item by item.SomeNumber;
// alternatively:
// var groups = myObjects.GroupBy(item => item.SomeNumber)

foreach (var g in groups)
{
    var someNumber = g.Key;
    var members = g.ToList();
}

应该这样做。