gpt4 book ai didi

c# - GroupBy 从 IEnumerable 对象列表中删除重复项

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:12 25 4
gpt4 key购买 nike

我有一个重复名称的列表,我想获取没有重复名称的列表。

 CSVCategories = from line in File.ReadAllLines(path).Skip(1)
let columns = line.Split(',')
select new Category
{
Name = columns[9]
};

var results = CSVCategories.GroupBy(x => x.Name)
.Select(g => g.FirstOrDefault())
.ToList();

我尝试查看元素并使用以下循环进行调试,但它仍然返回列表中的重复项,包括空值的空字符串:

foreach(var item in results)
{
Console.WriteLine(item.Name);
}

最佳答案

调用 Distinct 很可能不起作用,因为您的 Category 类没有正确实现 Equals 和 GetHashCode。

您有两个选择。适当覆盖 Equals 和 GetHashCode 方法,或使用 Hashset 检查 Name 是否尚未添加。

var uniqueNames = new Hashset<string>(); 

// Original select statement

CSVCategories = CSVCategories.Where(x => uniqueName.Add(x.Name)).ToList();

关于c# - GroupBy 从 IEnumerable 对象列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42316343/

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