2015-06-17 138 views
0

下面的代碼有一個列表中有兩行,我想能夠合併兩條線,並基於國家的收入總和。c#追加新項目列表項

public class City 
{ 
public string Name {get;set;} 
public string Country {get;set;} 
public double income {get;set;} 
} 
public class myClass 
{ 
void Main() 
{ 

var c = GetCities(); 
var d = c.GroupBy(s => new {s.Country, s.Flag, s.Name}).Select(s => new City { Country = s.Key.Country, Flag = s.Key.Flag, Name = s.Key.Name}); 
d.Dump(); //LINQPAD output to screen 
} 

public List<City> GetCities() 
{ 
List<City> cities = new List<City>(); 
cities.Add(new City() { Name = "Istanbul", income= 22.00, Country = "Turkey" }); 
cities.Add(new City() { Name = "", income= 44.88, Country = "Turkey" }); 
return cities; 
} 
} 

在我的真實應用程序中,列表正在兩個地方生成,但數據需要在一行中顯示。

+2

它不是完全清楚什麼其實是錯誤的。你能澄清一點,可能是輸入數據和預期輸出? – BradleyDotNET

+0

當我不做for循環它出現在兩個不同的調用的一行上。 –

+2

輸出與顯示的代碼無關,因此您需要顯示如何輸出。 – BradleyDotNET

回答

0

發現我的答案

var result = c.GroupBy(x => x.Country) 
.Select(g => { 
var item = g.First(); 
return new{ 
Country = item.Country, 
Name = item.Name, 
income = g.Sum(x => x.income) }; 
}).ToList(); 
+0

那麼這似乎採取了第一個名字,並忽略了其餘的名字。然後總結結果。你的結果不應該忽略這個名字嗎?沒有「Name = item.Name」的情況下您也有同樣的事情。位??? – SollyM