我在这里问过一个相似的问题。 Get Distinct values out of List<Object>
但这个问题并不重复。它与我所说的类似但远非重复。在另一个问题中,我们使用Distinct获取值,这里我们得到了对象。
但是我有问题要做到这一点。
我的List<Beam>
定义如下:
List<Beam> Beams = new List<Beam>;
public class
{
public double Elevation;
}
如何根据List<Beam>
属性从Elevation
获取不同的对象?
答案 0 :(得分:2)
您可以在此处使用GroupBy:
var distinctBeams = beams
.GroupBy(b => b.Elevation)
.Select(g => g.First())
.ToList();
答案 1 :(得分:1)
using System.Linq;
public class Beam
{
public double Elevation;
protected bool Equals(Beam other)
{
return Elevation.Equals(other.Elevation);
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((Beam) obj);
}
public override int GetHashCode()
{
return Elevation.GetHashCode();
}
}
var distinctBeams = beams.Distinct()
答案 2 :(得分:1)
我相信你可以做到
var distinctList = beams.GroupBy(b=>b.Elevation).Select(g=>g.first());
基本上按照你想要的任何属性对对象进行分组,然后取一个。