Ben*_*Ben 2 c# list duplicates
我一直在寻找一种方法来过滤掉列表中的重复项以填充表单,但到目前为止,我发现只需创建一个重复列表,其中包含一个Hashset或其他方法,涉及将重复项分组到单独的列表中,但是我对保持额外内容不感兴趣.
目前我在组合框中得到的是:
123
123
456
456
789
789
Run Code Online (Sandbox Code Playgroud)
等等......麻烦的是,我正在收集模型(或类)中的数据:
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;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用唯一的类填充列表:
ModelName<1>
{
Name;
Number;
}
ModelName<2>
{
Name;
}
ModelName<3>
{
Number;
}
Run Code Online (Sandbox Code Playgroud)
并过滤掉并处理掉任何双倍的东西?
Mar*_*age 10
您可以使用LINQ Distinct运算符从集合中删除重复项:
var listWithoutDuplicates = listWithDuplicates.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
如果要自定义元素的比较方式,则可以使用需要的重载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();
}
}
Run Code Online (Sandbox Code Playgroud)
并按位置获取不同的项目:
var listWithoutDuplicates = listWithDuplicates.Distinct(new EqualityComparer).ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |