gpt4 book ai didi

c# - 为什么linq-to-sql查询被翻译成子查询?

转载 作者:行者123 更新时间:2023-11-30 12:33:49 26 4
gpt4 key购买 nike

为什么这个 linq 查询:

(from c in Orders
select new
{
Id=c.Id,
DeliveryDate = c.DeliveryDate.Value
}).Take(10)

被翻译成

SELECT TOP (10) [t1].[Id], [t1].[value] AS [DeliveryDate]
FROM (
SELECT [t0].[Id], [t0].[DeliveryDate] AS [value]
FROM [Orders] AS [t0]
) AS [t1]

但是当我将 DeliveryDate = c.DeliveryDate.Value 更改为 DeliveryDate = c.DeliveryDate 时,SQL 查询看起来很简单:

SELECT TOP (10) [t0].[Id], [t0].[DeliveryDate]
FROM [Orders] AS [t0]

最佳答案

我认为这是因为 LINQ2SQL 的翻译器未优化。使用“属性”(Value)会触发子查询的创建,结果证明这是不必要的。

值得注意的是,任何物有所值的 RDBMS 都会为两个 SQL 查询生成相同的查询计划,因此最终这两种方式都无关紧要。

关于c# - 为什么linq-to-sql查询被翻译成子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8376435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com