获取不同的值了名单,LT的;对象> [英] Get Distinct values out of List<Object>

查看:96
本文介绍了获取不同的值了名单,LT的;对象>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个列表包含类的实例。每个对象都有一个海拔属性。

 列表<光束GT;梁=新的List<光束GT; {BEAM1,BEAM2,...}; 

公共类束
{
公共双重提升;
}

现在我想创建一个列表<双> 包含不同的海拔高度。
例如如何编写接受梁列表如下

  VAR BEAM1 =新梁{高程的方法= 320); 
变种BEAM2 =新梁{高程= 320);
变种BEAM3 =新梁{高程= 640);
变种BEAM4 =新梁{高程= 0);

名单,LT;光束GT;梁=新的List<光束GT; {BEAM1,BEAM2,BEAM3,BEAM4};

和给出了这样的删除重复的海拔高度:

  listOfElevations = {0,320640} 


解决方案

1)使光束实现IComparable:

 公共类梁:IComparable的
{
公共双重提升; //考虑这个不断变化的财产,顺便说一句。

公众诠释的CompareTo(obj对象){
如果(OBJ == NULL)回报1;

束流otherBeam = OBJ的光束;
返回this.Elevation.CompareTo(otherBeam.Elevation);
}
}



2)使用distinct():

  VAR listOfElevations = Beams.Distinct()选择(X => x.Elevation)。.ToList(); 


I have a List that contains instances of Beam class. Each of these Beam objects has an Elevation property.

List<Beam> Beams = new List<Beam> {Beam1, Beam2, ...};

public class Beam
{
    public double Elevation;
}

Now I want to create a List<double> that contains distinct Elevations. For example how to write a method that accepts the Beams list as below

var Beam1 = new Beam { Elevation = 320);
var Beam2 = new Beam { Elevation = 320);
var Beam3 = new Beam { Elevation = 640);
var Beam4 = new Beam { Elevation = 0);

List<Beam> Beams = new List<Beam> {Beam1, Beam2, Beam3, Beam4};

And gives this removing the duplicate elevations:

listOfElevations = {0, 320,640}

解决方案

1) Make Beam implement IComparable:

public class Beam : IComparable
{
    public double Elevation; //consider changing this to property, btw.

    public int CompareTo(object obj) {
         if (obj == null) return 1;

         Beam otherBeam = obj as Beam;
         return this.Elevation.CompareTo(otherBeam.Elevation);
    }
}

2) use Distinct():

var listOfElevations = Beams.Distinct().Select(x=> x.Elevation).ToList();

这篇关于获取不同的值了名单,LT的;对象&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆