Присоединяйтесь в синтаксисе LINQ Query: двигая правую сторону влево - PullRequest
4 голосов
/ 18 апреля 2019

У меня есть сценарий, где мне нужно объединить две таблицы:

A

|---------------------|------------------|
|          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 для объединенияэти две таблицы.

Левая таблица должна быть Таблицей А.

Хотя мне нужно объединиться, основываясь на том, содержит ли столбец «текст» текст из столбца Имя в Таблице А.

Код должен выглядеть примерно так:

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

Я не могу использовать tb в левой части соединения.

Я могу использовать толькоta.

tb работает с правой стороны объединения.

Можно ли как-нибудь переключить его, чтобы я мог использовать tb налевая сторона?

1 Ответ

3 голосов
/ 18 апреля 2019

Объединения в LINQ могут работать только при сопоставлении на равенство. Но вы можете использовать метод SelectMany в сочетании с Where. Это по существу сделает соединение условием.

В синтаксисе запроса это будет выглядеть так:

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

См. Также Выполнение пользовательских операций объединения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...