从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