在一个集群项目上工作时,我偶然发现了这一点,我试图弄清楚是否有比我想出的更好的解决方案。
问题:给定List<Point> Points
R^n 中的 a 个点(您可以将每个 Point 视为维度 n 的双精度数组)、adouble minDistance
和 a distance Func<Point,Point,double> dist
,编写一个 LINQ 表达式,该表达式为每个点返回列表中其他点的集合根据 dist 比 minDistance 更接近他。
我的解决方案如下:
var lst = Points.Select(
x => Points.Where(z => dist(x, z) < minDistance)
.ToList() )
.ToList();
所以,注意到之后
- 使用 LINQ 可能不是最好的主意,因为您要计算每个距离两次
- 这个问题没有太大的实际用途
- 我的代码,即使看起来很糟糕,也可以工作
我有以下问题:
- 是否可以在查询表达式中翻译我的代码?如果是这样,如何?
- 有没有更好的方法来用点表示法解决这个问题?