2017-01-23 85 views
0
PersonList = PersonList 
      .GroupBy(s => s.LastName) 
      .Select(g => new Person { 
       LastName = g.Key, 
       Period = g.Select(p => p.Period), 
       Time = string.Join(" ", g.Select(v => CheckTime(v.Time, v.Period) + "' " + v.Gtype)) }) 
      .ToList(); 

我有這樣的LINQ聲明,我收到此錯誤:如何分組,並選擇在LINQ C#中的多個對象

Cannot implicitly convert type System.Collection.Generic.Ienumerable<string> to 'string' .

是否有可能選擇的人對象的多個屬性

+0

您已經從_Person_ object中選擇屬性了嗎?這個錯誤是因爲你的查詢返回'List ',而你試圖將它存儲在一個_string_類型的變量中。 –

+3

什麼樣的數據類型是「Period」? – Magnus

+2

你能描述*你試圖用這個查詢來實現什麼 - 你通過他們的姓氏得到了一些人的聚合數據,但是在人的時期存儲了什麼? –

回答

1

修改這樣

您的代碼:

Period = g.Select(p => p.Period) 

修改後的代碼:

Period = g.Select(p => p.Period).FirstOrDefault() 
1

假設你想爲姓氏和週期(而不是像該名組在第一期)獨特的羣體,你可以在這兩個姓氏組和週期與.GroupBy(s => new{s.LastName, s.Period})。密鑰將包含兩個屬性:

PersonList = PersonList 
     .GroupBy(s => new {s.LastName, s.Period}) 
     .Select(g => new Person { 
      LastName = g.Key.LastName, 
      Period = g.Key.Period, 
      Time = string.Join(" ", g.Select(v => CheckTime(v.Time, v.Period) + "' " + v.Gtype)) }) 
     .ToList();