gpt4 book ai didi

c# - 使用 Linq 删除重复项

转载 作者:行者123 更新时间:2023-12-02 22:42:25 24 4
gpt4 key购买 nike

我正在使用返回重复 ID 的 API。我需要使用 EF 将这些值插入到我的数据库中。在尝试添加对象之前,我想删除所有重复项。

我有一个我正在尝试编写的代码的小示例。

  var itemsToImport = new List<Item>(){};
itemsToImport.Add(new Item() { Description = "D-0", Id = 0 });
for (int i = 0; i < 5; i++)
{
itemsToImport.Add(new Item(){Id = i,Description = "D-"+i.ToString()});
}

var currentItems = new List<Item>
{
new Item() {Id = 1,Description = "D-1"},
new Item(){Id = 3,Description = "D-3"}
};
//returns the correct missing Ids
var missing = itemsToImport.Select(s => s.Id).Except(currentItems.Select(s => s.Id));


//toAdd contains the duplicate record.
var toAdd = itemsToImport.Where(x => missing.Contains(x.Id));
foreach (var item in toAdd)
{
Console.WriteLine(item.Description);
}

我需要更改什么才能修复我的变量“toAdd”以仅返回一条记录,即使存在重复也是如此?

最佳答案

您可以通过按 Id 分组然后选择每个组中的第一个项目来完成此操作。

var toAdd = itemsToImport
.Where(x => missing.Contains(x.Id));

成为

var toAdd = itemsToImport
.Where(x => missing.Contains(x.Id))
.GroupBy(item => item.Id)
.Select(grp => grp.First());

关于c# - 使用 Linq 删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10612374/

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