Intersection between sets containing different types of variables
Let's assume we have two collections:
List<double> values
List<SomePoint> points
where 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 开发者_如何学Cthere is the same Z
value, but different X
and Y
. Is there any better way to do it?
Could you not just do
var query = (from d in values
join p in points
on d equals p.Z
select p).ToList();
?
HashSet<double> values = ...;
IEnumerable<SomePoint> points = ...;
var result = points.Where(point => values.Contains(point.Z));
精彩评论