从List <object> </object>中选择不同的对象

时间:2014-04-06 17:05:06

标签: c# list

我在这里问过一个相似的问题。 Get Distinct values out of List<Object>

但这个问题并不重复。它与我所说的类似但远非重复。在另一个问题中,我们使用Distinct获取值,这里我们得到了对象。

但是我有问题要做到这一点。

我的List<Beam>定义如下:

List<Beam> Beams = new List<Beam>;

public class
{
    public double Elevation;
}

如何根据List<Beam>属性从Elevation获取不同的对象?

3 个答案:

答案 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());

基本上按照你想要的任何属性对对象进行分组,然后取一个。