在我当前的测试项目中,我希望将所有对象合并到一个列表中,其中一个值与另一个对象中的值相同,然后我想检查这些对象下的其他值并将它们组合在一起,如下示例:
Object1
{
id = 111,
price1 = 10,
price 2 = 20
}
Object2
{
id = 222,
price1 = 10,
price 2 = 20
}
Object3
{
id = 111,
price1 = 30,
price 2 = 70
}
Object4
{
id = 444,
price1 = 15,
price 2 = 25
}
Run Code Online (Sandbox Code Playgroud)
从上面的对象 1 和对象 3 将根据其相关的“id”值进行组合,然后将它们的价格组合起来,并会导致以下对象替换列表中的对象 1 和对象 3:
NewObject
{
id = 111,
price1 = 40,
price 2 = 90
}
Run Code Online (Sandbox Code Playgroud)
最终列表将如下所示:
NewObject
{
id = 111,
price1 = 40,
price 2 = 90
}
Object2
{
id = 222,
price1 = 10,
price 2 = 20
}
Object4
{
id = 444,
price1 = 15,
price 2 = 25
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我将使用 linq 获取该值,如下所示:
是否有一种使用单个 LINQ 语句更快更简单的方法?
var result = source
.GroupBy(x => x.id,
(key, values) => new {
id = key,
price1 = values.Sum(x => x.price1),
price2 = values.Sum(x => x.price2)
});
Run Code Online (Sandbox Code Playgroud)