C# 如何清除列表中的元素<&燃气轮机;它们在c中彼此相似#
我有一个列表,但是在这个列表中有很多元素具有相同的值。我想清除具有相同值且每个元素组中有一个值的值 您可以将它们放入一个集合,该集合强制唯一性,只要您声明了#equals以进行正确的比较。如果您使用3.5+,您可以使用Linq来实现这一点:C# 如何清除列表中的元素<&燃气轮机;它们在c中彼此相似#,c#,arrays,list,C#,Arrays,List,我有一个列表,但是在这个列表中有很多元素具有相同的值。我想清除具有相同值且每个元素组中有一个值的值 您可以将它们放入一个集合,该集合强制唯一性,只要您声明了#equals以进行正确的比较。如果您使用3.5+,您可以使用Linq来实现这一点: myDistinctList = myList.Distinct(); 这假设列表值是实现IComparable的原语或对象。在C#4.0中使用不同的扩展方法: var values=new List<Type>; var result=res
myDistinctList = myList.Distinct();
这假设列表值是实现IComparable的原语或对象。在C#4.0中使用不同的扩展方法:
var values=new List<Type>;
var result=result.Distict().ToList();
return result;
var值=新列表;
var result=result.Distict().ToList();
返回结果;
更新:
如果您的类型是引用类型,请使用:
result.Distict(IEqualityComparer<Type>)
result.Distict(IEqualityComparer)
您可以使用:
- 删除重复项:。不同()
- 组:。GroupBy()
- 如果您试图合并两个列表
您可以使用
联合
List<int> results = lst1.Union(lst2).ToList();
如果您试图从一个对象列表中删除重复项 您可以将
Distinct
与IEqualityComparer
一起使用
您是否希望能够在列表中存储多个,另外,当你做foreach时,你是否关心列表的顺序?谢谢你,这正是解决方案。我以为OP正在尝试合并两个列表并消除重复项。但它会因什么而不同?想想看,我有三个不同的列数据行列表。我想对ID列使用不同的方法??现在我不确定。我又读了一遍这个问题,听起来OP要求过滤一个列表。你能澄清一下@Aykut吗?是的,我想筛选一个具有相同值的列表。例如:{1,1,1,1,2,2,4,4,4}。我希望这个列表作为{1,2,4}的一部分,Linq
Distinct
在内部实现为Set
(internal
framework实用程序类,类似于HashSet
),因此它也有这些要求。
List<int> lst3 = lst1.Concat(lst2).Distinct().ToList();
List<DataRow> results = lst1.Distinct(new RowComparer()).ToList();
public class RowComparer : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y) {
return x.Field<int>("ID") == y.Field<int>("ID");
}
public int GetHashCode(DataRow obj) {
return obj.Field<int>("ID").GetHashCode();
}
}
List<DataRow> results = lst1.Union(lst2, new RowComparer()).ToList();
public class RowComparer : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y) {
return x.Field<int>("ID") == y.Field<int>("ID");
}
public int GetHashCode(DataRow obj) {
return obj.Field<int>("ID").GetHashCode();
}
}