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



我有一个需要连接两个表的场景:

一个

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

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

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

左表必须是表 A。

虽然我需要根据"文本"列是否包含表 A 中"名称"列中的文本来连接。

代码应如下所示:

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

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

相关内容

  • 没有找到相关文章

最新更新