Linq加入没有平等

Phi*_*hil 9 c# linq join

我有一个矩形列表和一个点​​列表.我想构建一个LINQ查询,它将匹配点列表及其对应的矩形.像这样的东西:

// Does not compile
var matches = from rect in rectangles
              join point in points on rect.Contains(point)
              select new { rect, point };
Run Code Online (Sandbox Code Playgroud)

如何使用LINQ实现这样的功能?

编辑:

我的列表大小相同 - 我有一个点与一个矩形匹配,矩形不重叠.

然而,问题的关键不在于解决这个具体问题.一般来说,我感兴趣的是如何在除了'equals'之外的任何条件下加入两个列表.

Alo*_*aus 14

您可以使用多个from子句来实现连接

 var matches = from p in points
               from r in rectangles
               where r.Contains(p)
               select new { r, p };
Run Code Online (Sandbox Code Playgroud)

多个from子句比join语法更灵活(参见神话中的5个LINQ神话).你只需要学习这一个,所有的连接都很容易.