2014-01-22 144 views
0

我想通過一個屬性(狀態)對對象進行分組。最終目標是要有一份清單。在每個列表中有一個由兩個屬性組成的對象。我有數據,看起來像下面...Linq按屬性分組項目

State  Name  ID 
CA   John  12 
CA   Kevin  13 
CA   Joe   14 
AZ   Sally  15754 
AZ   Stuart  1263 
TN   Sam   1211 

一個如何去使用LINQ,使這個對象「人」組成的人的名字和身份證按州分組的名單?這是我試過...但它不工作

var result = from groupOne in dataset 
      group groupOne by OneGroup.State into g 
      select new People() { People = g.ToList() }.ToList(); 
+2

*它不工作*不是特別有用。你得到了什麼樣的錯誤?「人」類是什麼樣的? –

+0

和OneGroup是什麼? –

+1

'new People(){People = g.ToList()}'不可能是合法的,因爲一個成員不能與它的封閉類型具有相同的名稱......(呃,實際上這是可能的,如果People屬性在基類中聲明,但似乎不太可能......) –

回答

1

你爲什麼要通過OneGroup.State分組,當OneGroup不是查詢的一部分嗎?

一個人應該做的伎倆:

var result = from groupOne in dataset 
      group groupOne by groupOne.State into g 
      select new { 
       State = g.Key, 
       People = g.Select(x => new { x.Name, x.ID }) 
      }; 

它返回匿名類型,但是你可以很容易地改變它,如果你需要回到你的類的對象。