Skip to main content
 首页 » 编程设计

c#之包含不同类型变量的集合之间的交集

2024年01月25日31fff_TT

假设我们有两个集合:

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 .有没有更好的方法呢?

请您参考如下方法:

你能不能不做

var query = (from d in values 
            join p in points 
            on d equals p.Z 
            select p).ToList(); 

?