我有多个具有多个值的列表,这些值可能具有也可能不具有相同数量的项目。 我只需要按索引将不同名称的数字相加。
这里有一些代码可以帮助解释...
public static List<p> pList= new List<p>();
public class p
{
public string name;
public double sum;
public List<double> ip;
}
所以,我有类“p”,作为一个列表.. 类“p”中的某些名称将相同,而另一些则不同..
我只需要为具有相同名称的类“p”按索引对“ip”中的值求和。
数据示例..
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 }
最佳答案
你可以总结出ip列表
ip = Enumerable.Range(0, g.Select(a => a.ip.Length).Max()).Select(idx => g.Select(a => a.ip.ElementAtOrDefault(idx)).Sum()).ToList()
关于c# linq,按索引对不同值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15189150/