4

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

一个

|---------------------|------------------|
|          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在左侧使用?

4

1 回答 1

3

LINQ 中的联接只能用于相等匹配。但是你可以使用SelectMany结合Where. 它基本上会按条件进行连接。

在查询语法中,它会是这样的:

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

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

于 2019-04-18T09:26:09.647 回答