加入Linq的最佳方式

Akr*_*rem 9 c# linq comparison join

我正在使用下面的第一种方法,但后来我找到了第二种方法,想知道差异,哪种方法最好.

有什么区别:

from a in this.dataContext.reglements
join b in this.dataContext.Clients on a.Id_client equals b.Id 
select...
Run Code Online (Sandbox Code Playgroud)

from a in this.dataContext.reglements
from b in this.dataContext.Clients
where a.Id_client == b.Id 
select...
Run Code Online (Sandbox Code Playgroud)

Nix*_*Nix 6

我创建了一个测试用例来测试差异,并且在你的场景中它们是相同的.

我的测试示例使用了AdventureWorks,但基本上之间存在关联

产品展示 - > CategoryId->分类

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

q.ToList();
Run Code Online (Sandbox Code Playgroud)

生成这个SQL:

SELECT [t0].[ProductID], [t0].[ProductName], [t0].[CategoryID]
    FROM [Products] AS [t0], [Categories] AS [t1]
WHERE [t0].[CategoryID] = ([t1].[CategoryID])
Run Code Online (Sandbox Code Playgroud)
var q2 = (
    from p in Products 
    join c in Categories 
        on p.CategoryID equals c.CategoryID
    select p);

q2.ToList();
Run Code Online (Sandbox Code Playgroud)

生成这个sql:

SELECT [t0].[ProductID], [t0].[ProductName], [t0].[CategoryID]
FROM [Products] AS [t0]
INNER JOIN [Categories] AS [t1] ON [t0].[CategoryID] = ([t1].[CategoryID])
Run Code Online (Sandbox Code Playgroud)