В чем разница между соединением и соединением в запросе LINQ в среде asp.NET MVC 4

У меня есть два dataTable с именами A и B, мне нужны все строки из A и соответствующая строка B

A:                                           B:

User | age| Data                            ID  | age|Growth                                
1    |2   |43.5                             1   |2   |46.5
2    |3   |44.5                             1   |5   |49.5
3    |4   |45.6                             1   |6   |48.5

И выход будет

User | age| Data |Growth
------------------------                           
1    |2   |43.5  |46.5                           
2    |3   |44.5  |                          
3    |4   |45.6  |

В этом случае я получил решение от StackOverflow.com Link

var results = from data in userData
              join growth in userGrowth
              on data.User equals growth.User into joined
              from j in joined.DefaultIfEmpty()
              select new 
              {
                  UserData = data,
                  UserGrowth = j
              };

Он работает нормально, но я немного запутался, в чем разница между join и joined в этом LINQ Query. Спасибо.


person Community    schedule 29.06.2016    source источник
comment
joined — это просто имя переменной. Вы могли бы назвать это как угодно.   -  person    schedule 29.06.2016


Ответы (2)


joined — это имя переменной для результата операции join или group by. просто чтобы иметь возможность использовать его в предложении from.

MSDN:

Контекстное ключевое слово into можно использовать для создания временного идентификатора для сохранения результатов группировки, присоединения или предложения select в новый идентификатор. Этот идентификатор сам по себе может быть генератором дополнительных команд запроса. При использовании в предложении group или select использование нового идентификатора иногда называют продолжением.

В вашем случае идентификатор joined используется для выполнения LEFT JOIN. Проверяя, является ли результат join (который хранится в joined) пустым, тогда j будет null, и запись не будет пропущена (как в INNER JOIN).

person Zein Makki    schedule 29.06.2016

join — это просто имя переменной результирующей коллекции. Вы можете видеть, что он создается в строке, которая заканчивается на into joined. Затем он используется в следующей строке.

person Mike    schedule 29.06.2016