gpt4 book ai didi

c# - 合并列表中的重复项

转载 作者:行者123 更新时间:2023-12-02 03:43:10 24 4
gpt4 key购买 nike

在我当前的测试项目中,我希望将所有对象合并到一个列表中,其中一个值与另一个对象中的值相同,然后我想检查这些对象下的其他值并将它们组合在一起,如下所示和例子:

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
}

上面的对象 1 和对象 3 将根据其相关的“id”值进行组合,然后将它们的价格组合起来,并导致以下对象替换列表中的对象 1 和对象 3:

NewObject
{
id = 111,
price1 = 40,
price 2 = 90
}

最终列表将如下所示:

NewObject
{
id = 111,
price1 = 40,
price 2 = 90
}

Object2
{
id = 222,
price1 = 10,
price 2 = 20
}

Object4
{
id = 444,
price1 = 15,
price 2 = 25
}

到目前为止,我将使用 linq 获取值,如下所示:

  1. 选择所有具有相同 ID 的内容并添加其值
  2. 使用第 1 步中获得的所有值的组合创建新对象,并将其添加到新列表
  3. 继续列表,如果“id”已存在于新列表中,则忽略它,因为它已合并到新列表中

是否有一种使用单个 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)
});

关于c# - 合并列表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47790257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com