Linq SUM在对象上? [英] Linq SUM on objects?
本文介绍了Linq SUM在对象上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个代表业务数据的对象.
I've an object that represent a business data.
基本上,这是一个汇总了一些总数的对象:
Basically, it's an object agregating some totals:
public class MyClass{
public double MyDataOne {get;set;}
public double MyDataTwo {get;set;}
public double MyDataThree {get;set;}
public static MyClass operator +(MyClass data1, MyClass data2){
return new MyClass{MyDataOne = data1.MyDataOne + data2.MyDataOne, MyDataTwo=data1.MyDataTwo+data2.MyDataTwo, MyDataThree=data1.MyDataThree+data2.MyDataThree };
}
}
现在,如果我有IEnumerable<MyClass> myClasses
,我可以在MyClass中实现一些功能吗?
Now, if I've an IEnumerable<MyClass> myClasses
, Is there somethings I can implement in MyClass to make this:?
myClasses.Sum(d=>d);
因为对我来说,添加对象的方式必须是对象的知识,而不是调用者的知识(如果有一天我有一个以上的数据,我不想查看我的整个代码以查看它的位置使用).
Because for me, the way an object is additioned must be the knowledge of the object and not the caller(if one day I've one data more, I don't want to look in my whole code to see where it is used).
谢谢
推荐答案
编写您自己的扩展方法:
Write your own extension method:
public static MyClass Sum(this IEnumerable<MyClass> source)
{
var result = new MyClass(); // all data will be zeros
foreach(var item in source)
result = result + item;
return result;
}
用法:
var sum = myClasses.Sum();
这篇关于Linq SUM在对象上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文