所以,假设我有如下内容:
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/