c# - 在 C# 中获取 List<T> 中不同值的列表

标签 c# .net linq list distinct

所以,假设我有如下内容:

public class Element
{
  public int ID;
  public int Type;
  public Properties prorerty;
  ...
}

public class Properties
{
  public int Id;
  public string Property;
  ...
}

我有一个列表:

List Elements = new List();

在 Element 类的 prorerty 列中获取所有不同值的列表的最简洁方法是什么?我的意思是,我可以遍历列表并将所有不重复的值添加到另一个字符串列表,但这看起来很脏且效率低下。我有一种感觉,有一些神奇的 Linq 构造可以在一行中完成此操作,但我还没有想出任何办法。

最佳答案

 var results = Elements.Distinct();

注意:您必须覆盖 .Equals.GetHashCode()

public class Element : IEqualityComparer<Element>
{
   public bool Equals(Element x, Element y)
   {
     if (x.ID == y.ID)
     {
        return true;
     }
     else
     {
        return false;
     }
   }
}

public int GetHashCode(Element obj)
{
    return obj.ID.GetHashCode();
}

关于c# - 在 C# 中获取 List<T> 中不同值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14810047/

相关文章:

c# - 如何生成测试数据?

c# - 返回泛型类型的实例

c# - LINQ to XML Select 语句 - 无结果

c# - 如何正确连接到 Json.NET 的 JObject.ToObject<T>()?

C# HtmlAgilityPack 解析 <ul>

c# - 使用对象初始值设定项时如何正确使用断点?

c# - 清楚地说明自动注册的程序集

c# - wpf 中的设计数据

javascript - 将 .NET JavaScriptSerializer.Deserialize 与来自客户端的 DateTime 一起使用

c# - 在 linq 查询中获取计数