Лучший способ присоединиться к Linq - PullRequest
9 голосов
/ 08 июля 2011

Я работал с первым методом ниже, но потом я нашел второй и хочу узнать разницу и какая лучше.

В чем разница между:

from a in this.dataContext.reglements
join b in this.dataContext.Clients on a.Id_client equals b.Id 
select...

и

from a in this.dataContext.reglements
from b in this.dataContext.Clients
where a.Id_client == b.Id 
select...

Ответы [ 2 ]

6 голосов
/ 08 июля 2011

Я создал контрольный пример, чтобы проверить разницу, и в вашем сценарии оказалось, что они одинаковы.

В моем тестовом примере использовался AdventureWorks, но в основном существует связь между

Продукты-> CategoryId-> Категория

var q = (
    from p in Products
    from c in Categories
        where p.CategoryID==c.CategoryID
    select p
);

q.ToList();

Создает этот SQL:

SELECT [t0].[ProductID], [t0].[ProductName], [t0].[CategoryID]
    FROM [Products] AS [t0], [Categories] AS [t1]
WHERE [t0].[CategoryID] = ([t1].[CategoryID])

var q2 = (
    from p in Products 
    join c in Categories 
        on p.CategoryID equals c.CategoryID
    select p);

q2.ToList();

Производит этот sql:

SELECT [t0].[ProductID], [t0].[ProductName], [t0].[CategoryID]
FROM [Products] AS [t0]
INNER JOIN [Categories] AS [t1] ON [t0].[CategoryID] = ([t1].[CategoryID])
2 голосов
/ 08 июля 2011

Разница между этими двумя синтаксисами будет в том, как они переводятся в SQL.Можно определить Entity Framework или LINQ to SQL, чтобы определить SQL:

LINQ to SQL: http://www.reflectionit.nl/Blog/PermaLinkcba15978-c792-44c9-aff2-26dbcc0da81e.aspx

Проверьте полученный SQL, чтобы определить, есть ли какие-либо различия, которые могут повлиять на производительность.1006 *

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