Каква е разликата между join и Joined в LINQ Query в asp.NET MVC 4 framework

Имам две таблици с данни, наречени 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 Връзка

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 може да се използва за създаване на временен идентификатор за съхраняване на резултатите от клауза за група, присъединяване или избор в нов идентификатор. Този идентификатор сам по себе си може да бъде генератор за допълнителни команди за заявки. Когато се използва в група или клауза за избор, използването на новия идентификатор понякога се нарича продължение.

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

person Zein Makki    schedule 29.06.2016

joined е само името на променливата на получената колекция. Можете да видите, че се създава в реда, който завършва с into joined. След това се използва в следващия ред.

person Mike    schedule 29.06.2016