包含不同类型变量的集合之间的相交(Intersection between sets containing different types of variables)
假设我们有两个集合:
List<double> values List<SomePoint> points其中SomePoint是包含三个坐标点的类型:
SomePoint { double X; double Y; double Z; }现在,我想执行这两个集合之间的交集,以找出哪些点中的points的z坐标等于某个元素的values
我创建了这样的东西:
HashSet<double> hash = new HashSet<double>(points.Select(p=>p.Z)); hash.IntersectWith(values); var result = new List<SomePoints>(); foreach(var h in hash) result.Add(points.Find(p => p.Z == h));但是它不会返回这些具有相同Z值但是不同的X和Y 。 有没有更好的方法来做到这一点?
Let's assume we have two collections:
List<double> values List<SomePoint> pointswhere SomePoint is a type containing three coordinates of the point:
SomePoint { double X; double Y; double Z; }Now, I would like to perform the intersection between these two collections to find out for which points in points the z coordinate is eqal to one of the elements of values
I created something like that:
HashSet<double> hash = new HashSet<double>(points.Select(p=>p.Z)); hash.IntersectWith(values); var result = new List<SomePoints>(); foreach(var h in hash) result.Add(points.Find(p => p.Z == h));But it won't return these points for which there is the same Z value, but different X and Y. Is there any better way to do it?
最满意答案
HashSet<double> values = ...; IEnumerable<SomePoint> points = ...; var result = points.Where(point => values.Contains(point.Z)); HashSet<double> values = ...; IEnumerable<SomePoint> points = ...; var result = points.Where(point => values.Contains(point.Z));更多推荐
发布评论