【发布时间】:2012-05-14 09:04:50
【问题描述】:
我有一个矩形列表和一个点列表。我想构建一个 LINQ 查询,它将点列表与其对应的矩形相匹配。像这样的:
// Does not compile
var matches = from rect in rectangles
join point in points on rect.Contains(point)
select new { rect, point };
如何使用 LINQ 完成这样的事情?
编辑:
我的列表大小相同 - 我有一个点与一个矩形匹配,并且矩形不重叠。
但是,问题的重点并不是解决这一特定问题。一般来说,我感兴趣的是如何在任何条件下加入两个列表,而不是简单地“等于”。
【问题讨论】:
-
学会爱上 LINQ 方法链,这样的问题就会瞬间消失。
-
我其实更喜欢 LINQ 方法链——如果你能找到以这种方式解决这个问题的方法,我很乐意回答!
-
矩形包含一个点对您意味着什么? System.Drawing.Rectangle 有一个位置点。您的意思是该点与矩形的位置点匹配还是在给定矩形区域内的某个位置?
-
@ConradFrix 这是我自己实现的矩形......这只是一个例子 - Contains() 内部发生的事情无关紧要;我只是在寻找一种在两个属性上没有简单“等于”的连接的方法。
-
@Phil,嗯,我说得太早了。完全忘记了
Join纯粹是基于密钥的。