C# 迭代列表,求和并将结果放入字典

C# 迭代列表,求和并将结果放入字典,c#,linq,C#,Linq,假设我有两个相同对象的多个列表,它们具有相同的字段/属性。 每个列表表示相同的对象 项目: 我想从所有列表中取迭代,取每个字段的和,可以是2,3,等等,然后用键值对将其存储在字典中。e、 g工时:2小时,工时:6小时 目前,我只能对一个字段进行硬编码。我想让它成为通用的,这样我就可以用所有字段的键/值填充字典 我对字典的定义如下 public Dictionary<string, double> TotalCount { get; set; } 您可以从所有列表中创建公共列表 Li

假设我有两个相同对象的多个列表,它们具有相同的字段/属性。 每个列表表示相同的对象

项目:

我想从所有列表中取迭代,取每个字段的和,可以是2,3,等等,然后用键值对将其存储在字典中。e、 g工时:2小时,工时:6小时

目前,我只能对一个字段进行硬编码。我想让它成为通用的,这样我就可以用所有字段的键/值填充字典

我对字典的定义如下

public Dictionary<string, double> TotalCount { get; set; }
您可以从所有列表中创建公共列表

List<SomeObject> lst = new List<SomeObject>();
lst.AddRange(Oldlst1);
lst.AddRange(Oldlst2);
然后你可以创建一个字典

var m=n.ToDictionary(x=>x.Key, x=>x.Sum(y=>y.workingHours));
在这里,以m为单位,你将得到hourRate,以值为单位,你将得到工作时间的总和

Dictionary<string, double> dictionary = new[] { "HoursWorked", "HoursRate" }
    .ToDictionary(k => k, v => collections
        .SelectMany(x => x)
        .Sum(y => (double)y.GetType().GetProperty(v).GetValue(y)));
其中“集合”是您的列表集合。 显然,完全不安全,很容易摔倒


我认为,与使用反射相比,一个更好的模式是编写一个方法或接口,在给定字符串键的情况下返回正确的双精度值。

您希望HoursWorked和HoursRate作为字典键吗?是的,我想要的正是样本数据和期望的结果。但这看起来不像是一个字典-您只是将两个属性相加,生成一个{HoursWorked,HoursRate}pairI,我想使用列表中的键值,但名称未知。。。也可能有10个列表。。我只想把我在问题中所说的动态化。请先看看我的问题。
class someObject
    {
        public int workingHours { get; set; }
        public int hourRate { get; set; }
    }
List<SomeObject> lst = new List<SomeObject>();
lst.AddRange(Oldlst1);
lst.AddRange(Oldlst2);
var n = lst.GroupBy(x=>x.hourRate);
var m=n.ToDictionary(x=>x.Key, x=>x.Sum(y=>y.workingHours));
Dictionary<string, double> dictionary = new[] { "HoursWorked", "HoursRate" }
    .ToDictionary(k => k, v => collections
        .SelectMany(x => x)
        .Sum(y => (double)y.GetType().GetProperty(v).GetValue(y)));