我有一个需要联接两个表的场景:
一种
|---------------------|------------------|
| 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
另请参阅Perform custom join operations
关于c# - 加入LINQ查询语法: moving right side to the left,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55742864/