C# 如何清除列表中的元素<&燃气轮机;它们在c中彼此相似#

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

我有一个列表,但是在这个列表中有很多元素具有相同的值。我想清除具有相同值且每个元素组中有一个值的值

您可以将它们放入一个集合,该集合强制唯一性,只要您声明了#equals以进行正确的比较。

如果您使用3.5+,您可以使用Linq来实现这一点:

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();
          }
      }