假设我们有两个集合:
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
不同的点。有没有更好的方法呢?
答案 0 :(得分:4)
你能不能做到
var query = (from d in values
join p in points
on d equals p.Z
select p).ToList();
答案 1 :(得分:3)
HashSet<double> values = ...;
IEnumerable<SomePoint> points = ...;
var result = points.Where(point => values.Contains(point.Z));