【发布时间】:2011-03-28 07:08:58
【问题描述】:
我有一些我想用 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 组查询中但没有成功。
我的问题:有没有更好/更优雅的方法来实现这一点?
谢谢
【问题讨论】:
标签: linq group-by copy-constructor