Csharp/C#教程:从List 中获取不同的值分享


从List 中获取不同的值

我有一个包含Beam类实例的List 。 这些Beam对象中的每一个都具有Elevation属性。

 List Beams = new List {Beam1, Beam2, ...}; public class Beam { public double Elevation; } 

现在我想创建一个包含不同Elevation的List 。 例如,如何编写一个接受Beams列表的方法,如下所示

 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 Beams = new List {Beam1, Beam2, Beam3, Beam4}; 

并删除重复的高程:

 listOfElevations = {0, 320,640} 

1)使梁工具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)使用Distinct():

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

使用Linq – 特别是Enumerable.Distinct()方法在这里是关键:

 var listOfElevations = beams.Select(x => x.Elevation) //project to Elevations .Distinct() // pick only distinct ones .ToList(); //make it a list 

使用LinQ非常简单:

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

您正在选择Elevation的值,选择Distinct值,将其设置为List,因为它是您的预期输出。

  List Beams = new List {Beam1, Beam2, Beam3, Beam4}; var differentBeams = Beams.Select(b => b.Elevation).Distinct().ToList(); 

使用LINQ另一种方法,如果您有多个属性并希望获得唯一列表,这可能很有用

上述就是C#学习教程:从List 中获取不同的值分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 beams.GroupBy(x => x.Elevation).Select(g => g.Key); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1012758.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐