我有多個列表可能有多個值,也可能沒有相同數量的項目.. 我只需要按索引將不同名稱的數字相加..c#linq,通過索引總結不同的值
繼承人一些代碼,以幫助解釋...
public static List<p> pList= new List<p>();
public class p
{
public string name;
public double sum;
public List<double> ip;
}
所以,我有類「p」,作爲一個列表.. 一些類別「p」的名稱將是相同的,有些不同..
我需要通過索引將「ip」中的值總和「P」 具有相同的名稱..
數據舉例..
name = a, sum = 10, ip = {2,2,2,2,2}
name = a, sum = 10, ip = {0,0,5,5}
name = a, sum = 5, ip = {0,0,5}
name = b, sum = 20, ip = {0,20}
name = b, sum = 10, ip = {10}
結果..
name = a, sum = 25, ip = {2,2,12,7,2}
name = b, sum = 30, ip = {10,20}
下面是我已經寫了代碼..
List<p> distinctmerge = pList
.GroupBy(t => t.name)
.Select(g => new p
{
name = g.Select(a => a.name).FirstOrDefault(),
sum = g.Sum(a => a.sum),
ip = new List<double>() { 1, 2, 3 }
}).ToList();
我無法弄清楚的部分在這裏..
ip = new List<double>() { 1, 2, 3 }
好。在最後一部分中,您可以從'.ElementAtOrDefault(idx)'中受益。 – 2013-03-03 18:39:00
謝謝,要去試試看..我一直在網上看,看到了一些這樣的東西,但只是想不出來.. – 2013-03-03 18:39:53
真棒..我花了幾個小時試圖找出這個..我應該早點來到這裏。 (0,g.Select(a => a.ip.Count).Max())。Select(idx => g.Select(a) => a.ip.Count> idx?a.ip [idx]:0).Sum())。ToList() 不得不使用Count來代替它,因爲它的List是一個List,並將[idx]更改爲a.ip [idx] – 2013-03-03 18:47:58