gpt4 book ai didi

c# - 根据多个字段或列从列表中删除重复项

转载 作者:太空狗 更新时间:2023-10-29 20:47:23 26 4
gpt4 key购买 nike

我有一个 MyClass 类型的列表

public class MyClass
{
public string prop1 {}
public int prop2 {}
public string prop3 {}
public int prop4 {}
public string prop5 {}
public string prop6 {}
....
}

此列表将有重复项。我想从此列表中查找并删除 prop1、prop2 和 prop3 重复的项目。其他属性是否重复并不重要

这是我试过的方法,但没有用。

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3} ).Where(g => g.Count() > 1).Select(g=> g.Key);

我不想为此使用任何第三方工具。只有纯 linq。

最佳答案

这将为每个“类型”返回一个项目(如 Distinct)(因此如果您有 A、A、B、C,它将返回 A、B、C)

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3} )
.Select(d => d.First())
.ToList();

如果您只需要没有重复的元素(所以如果您有 A、A、B、C,它将返回 B、C):

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3} )
.Where(d => d.Count() == 1)
.Select(d => d.First())
.ToList();

关于c# - 根据多个字段或列从列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715797/

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