我一直在使用下面的第一种方法,但后来我找到了第二种方法,想知道它们之间的区别以及哪种方法最好。
有什么区别:
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...
最佳答案
我创建了一个测试用例来测试差异,在您的场景中,结果证明它们是相同的。
我的测试示例使用 AdventureWorks 但基本上之间存在关联
Products->CategoryId->Categories
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])
关于c# - 加入 Linq 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6628576/