c# linq,按索引对不同值求和

标签 c# .net linq

我有多个具有多个值的列表,这些值可能具有也可能不具有相同数量的项目。 我只需要按索引将不同名称的数字相加。

这里有一些代码可以帮助解释...

    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/

相关文章:

c# - 使用 MVVM 将错误的 WPF 文本框滚动到 View 中

c# - 是否可以将 await 与使用自定义函数的查询一起使用

c# - 在C#中使用Windows Media Player播放声音

c#泛型类的具体覆盖

.net - Windows Azure 上的 AspPDF 和 AspJPEG

c++ - C++ 的 Activator.CreateInstance?

c# - 如何更新 XDocument 中元素的所有实例?

c# - 使用 c# Func 作为 IQueryable 的一部分而不执行内存调用

javascript - 与客户模拟使用网站

c# - 为什么不能将 Double 隐式转换为 Decimal