我有我想与 LINQ 分组的自定义对象(资产)的集合。自定义对象具有标准属性,如 id、name 和 cost 属性。分组时我想计算每个组的成本,所以我使用了这样的小技巧:
from a in assets
group a by a.AssetId into ga
select new Asset()
{
AssetId = ga.Key,
Cost = ga.Select(gg=>gg.Cost).Sum()
}
好的,这里一切都很好。但是...为了也初始化订单属性,我同时使用复制构造函数和成本计算...
from a in assets
group a by a.AssetId into ga
select new Asset(ga.FirstOrDefault())
{
AssetId = ga.Key,
Cost = ga.Select(gg=>gg.Cost).Sum()
}
所以现在,我通过 id 获取分组资产的集合,所有属性都从组中的第一个资产复制,并计算出分组成本。但是......为了做到这一点,我需要为使用这种分组的每个对象编写一个具有“所有属性初始化”的复制构造函数,在我的情况下这是开销,因为有具有 20 多个属性的对象。
我尝试使用链接中的克隆技巧:
在 linq 组查询中但没有成功。
我的问题:有没有更好/更优雅的方式来实现这一点?
谢谢