加入 LINQ 查询语法:将右侧移动到左侧

Join in LINQ Query Syntax: moving right side to the left

我有一个场景需要加入两个 tables:

一个

|---------------------|------------------|
|          ID         |        Name      |
|---------------------|------------------|
|          1          |        John      |
|---------------------|------------------|
|          2          |        Matt      |
|---------------------|------------------|
|          3          |        Emma      |
|---------------------|------------------|

B

|---------------------|------------------|
|          ID         |        Text      |
|---------------------|------------------|
|          1          |  blah blah John  |
|---------------------|------------------|
|          2          | this is some data|
|---------------------|------------------|
|          3          | My name is Jeff  |
|---------------------|------------------|

我需要使用 LINQ 的查询语法来连接这两个 table。

左边table需要TableA.

虽然我需要根据 "text" 列是否包含 Table A.

中 Name 列中的文本来加入

代码应如下所示:

var result = from ta in A
             join tb in B on tb.Text.Contains(ta.Name)

我似乎无法在联接的左侧使用 tb

我只能用ta.

tb 在联接的右侧工作。

有什么方法可以切换它,以便我可以在左侧使用 tb

LINQ 中的联接只能使用等式匹配。但是您可以将 SelectMany 方法与 Where 结合使用。它基本上会按条件进行连接。

查询语法是这样的:

from ta in A
from tb in B
where tb.Text.Contains(ta.Name)
// the rest of your query

另请参阅执行自定义联接操作