请引用ff。代码:
主要对象:
public class MainObj {
public string Name { get; set; }
public int SomeProperty { get; set; }
public List<SubObj> Subojects { get; set; }
}
子对象:
public class SubObj {
public string Description { get; set; }
public decimal Value { get; set; }
}
问题:我有一个 List<MainObj>
.每个项目都有相同数量的 SubObj
.如何对每个 SubObj
的值求和来自 MainObj A
对应于与 SubObj
相同的索引在另一个MainObj
在列表中。
进一步说明:
结果:
{
Name: "something....",
Value: SUM(MainObj_A.SubObj[0], MainObj_B.SubObj[0] .... MainObj_n.SubObj[0]
},
{
Name: "don't really care...."
Value: SUM(MainObj_A.SubObj[1], MainObj_B.SubObj[1] .... MainObj_n.SubObj[1]
},
{
Name: "don't really care...."
Value: SUM(MainObj_A.SubObj[2], MainObj_B.SubObj[2] .... MainObj_n.SubObj[2]
}
.... so on and so forth
我知道我可以遍历 MainObj
中的每一项然后执行求和,但我希望有一种更简单的方法使用 Linq
.
很抱歉,如果我不能用正确的词来回答我的问题。我希望这些插图对您有所帮助。
我们将不胜感激。 干杯!
最佳答案
据我了解,您正在寻找类似这样的问题:
var results = list.Select((m, i) => new
{
m.Name,
Value = list.Sum(t => t.SubObj[i].Value)
}).ToList();
这将创建一个匿名类型的列表,其中包含每个主对象的名称以及与主对象具有相同索引的所有子对象值的总和。
从你的问题中不清楚,但如果你想对所有子对象求和(不仅有主对象那么多),你可以这样做:
var results = Enumerable.Range(0, list[0].SubObj.Count)
.Select(i => list.Sum(m => m.SubObj[i].Value)).ToList();
这为您提供了总和列表(没有名称,因为您的示例表明您“并不真正关心”任何名称)。
关于c# - Sum List<T> List<T> 中每一项的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42714919/