我有一个需要连接两个表的场景:
一个
|---------------------|------------------|
| 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
另请参阅执行自定义联接操作