c# - 加入 Linq 的最佳方式

标签 c# linq join comparison

我一直在使用下面的第一种方法,但后来我找到了第二种方法,想知道它们之间的区别以及哪种方法最好。

有什么区别:

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/

相关文章:

c# - 已发布的 ClickOnce 应用程序未出现在“开始”菜单中

c# - 使用代码切换到 TabControl 中的选项卡

c# - LINQ 等效于 SELECT DISTINCT

c# - Lambda 表达式 LINQ 等同于 SQL Exists Query on Same Table/Variable

c# - 搜索列表列表

c# - 如何返回具有通用属性的 C# Web 服务?

c# - C# 检查点库

mysql - 识别 2 个表中的不同行

mysql结合3个表来获取用户和被关注的用户的帖子

ios - 展平任意数组