2010-05-14 22 views
4

這裏是我的查詢 -如何在LINQ中執行group by並獲取Iqueryable或Custom Class Object?

var data = Goaldata.GroupBy(c => c.GoalId).ToList(); 

這會返回一個Igrouping對象,我想一個IQueryable對象,我可以直接查詢通過使用foreach(獲取數據,而在這種情況下,我必須循環),然後獲取數據。有沒有另外一種方法在LINQ中進行分組,直接返回爲Iqueryable或List的列表,類似於LINQ中的命令。

回答

7

最簡單的方法可能是

var data = Goaldata.GroupBy(c => c.GoalId).SelectMany(c => c).ToList(); 

在OO意義上,它們並不是真正的分組,但它們與團體一起訂購。

+0

感謝這個作品! – Vishal 2010-05-14 20:17:55

0

或者.GroupBy(c => c.GoalId).AsQueryable()...

+0

嗯,這仍然返回一個IGrouping項目我這樣做這樣做 GroupBy(C => c.GoalId).AsQueryable()。Tolist() 但它做@Stephan的方式它的工作原理。 – Vishal 2010-05-14 20:09:32

4

雖然接受的答案是正確的,它似乎是不必要的複雜。假設GoalIdint你可以用OrderBy

var data = Goaldata.OrderBy(c => c.GoalId).ToList(); 
+0

雅,但會在這種情況下消除條目..我想分組,因爲有相同的GoalID多個條目。?我會盡力感謝。 – Vishal 2010-05-14 20:11:59

+0

@VJ:OrderBy不會刪除任何結果,它只會改變順序。 – 2010-05-14 20:15:47

+0

海事組織這個答案更簡單,在這個特定的背景下,會產生與接受的答案相同的輸出。你有我的贊成票。 – 2016-03-11 08:27:56