gpt4 book ai didi

c# - 如何在没有主键的情况下删除重复项(不同值)

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:54 24 4
gpt4 key购买 nike

我有一个包含列(ItemID、名称、价格)的表。

项目列表中填充了重复的项目。

例如:

--------------------------------------
ItemID Name Price
--------------------------------------
1 Bangles 100
2 Saree 200
3 Shoes 150
4 Bangles 100
5 Shoes 150

如何在不考虑主键的情况下仅使用两列的 linq 删除列表中的重复项?

最佳答案

想法是按条件对项目进行分组,然后在每个组中选择第一个项目。

var distinctItems = items.GroupBy(i => new{i.Name, i.Price})
.Select(g => g.First());

这里是完整的例子:

var items = new[]{
new Item{Id = 1, Name = "Bangles", Price = 100},
new Item{Id = 2, Name = "Saree", Price = 200},
new Item{Id = 3, Name = "Shoes", Price = 150},
new Item{Id = 4, Name = "Bangles", Price = 100},
new Item{Id = 5, Name = "Shoes", Price = 150}
};


var distinctItems = items.GroupBy(i => new{i.Name, i.Price})
.Select(g => g.First());

foreach (var item in distinctItems)
{
Console.WriteLine ("Name: {0} Price: {1}", item.Name, item.Price);
}

打印:

Name: Bangles Price: 100
Name: Saree Price: 200
Name: Shoes Price: 150

注意:考虑使用 DistinctBy它使用更高级的算法根据某些标准选择不同的对象。

关于c# - 如何在没有主键的情况下删除重复项(不同值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23734011/

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