gpt4 book ai didi

c# - 从列表中过滤重复项以填充 ComboBox

转载 作者:行者123 更新时间:2023-11-30 18:58:43 28 4
gpt4 key购买 nike

我一直在寻找一种方法来从列表中过滤掉重复项以填充表单,但到目前为止我发现的只是使用 Hashset 或其他方法创建重复列表这涉及将重复项分组到单独的列表中,但是我对保留额外内容不感兴趣。

目前我在组合框中得到的是:

123
123
456
456
789
789

等等...问题是,我正在这样收集模型(或类)中的数据:

List<ModelName>

ModelName<1>
{
string Name = Bob;
int Number = 123;
}
ModelName<2>
{
string Name = Jim;
int Number = 123;
}
ModelName<3>
{
string Name = Bob;
int Number = 456;
}

有没有办法用独特的类来填充列表:

ModelName<1>
{
Name;
Number;
}
ModelName<2>
{
Name;
}
ModelName<3>
{
Number;
}

然后只是过滤掉并处理任何加倍?

最佳答案

您可以使用 LINQ Distinct 从集合中删除重复项的运算符:

var listWithoutDuplicates = listWithDuplicates.Distinct().ToList();

如果您想自定义比较元素是否相等的方式,您可以使用 overload这需要 IEqualityComparer<T> .

在您的情况下,如果您想将“平等”定义为具有与 Location 相同的值您可以使用此属性 EqualityComparer :

class EqualityComparer : IEqualityComparer<ClassName> {

public Boolean Equals(ClassName x, ClassName y) {
return Equals(x.Location, y.Location);
}

public Int32 GetHashCode(ClassName obj) {
return obj.Location.GetHashCode();
}

}

并按位置获取不同的项目:

var listWithoutDuplicates = listWithDuplicates.Distinct(new EqualityComparer).ToList();

关于c# - 从列表中过滤重复项以填充 ComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22293897/

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