Предположим, у нас есть две коллекции:
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
. Есть ли лучший способ сделать это?