2011-03-31 84 views
0

我有結構如下C#LINQ分組問題

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

現在SomeNumber不是唯一的,如果我有一個IEnumerable我怎麼能拉出一個IEnumerable<MyObject>,所有具有相同SomeNumber值的對象?

我想我需要使用GroupBy來做到這一點?但似乎無法做到。

編輯:我不知道SomeNumber是什麼。

回答

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(); 
} 

應該做的。

+2

你應該可以將'g代入g選擇g' – StriplingWarrior 2011-03-31 16:16:03

+0

@StriplingWarrior:酷,調整 – skarmats 2011-03-31 16:24:06

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

沒有必要爲GroupBy,除非你想分組。

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

很好的答案。但是,只要你想要多個'SomeNumber'的項目,你最好將它們分組。特別是,因爲您可能不知道,您在哪個'SomeNumber'中感興趣。 – skarmats 2011-03-31 16:15:57

+0

我不知道它的價值。這在我的問題中可能不太清楚。 – LiamB 2011-03-31 16:16:14