gpt4 book ai didi

c# - 在显式 LINQ-to-SQL (C#) 中,顺序很重要吗?

转载 作者:行者123 更新时间:2023-11-30 20:14:14 25 4
gpt4 key购买 nike

我知道 Linq-to-SQL 已经死了,但无论如何,我认为这真的很基础,我只是对 Linq-to-SQL 对它生成的 SQL 的作用和不作用感到困惑。

如果我已经建立了一个表达式树作为“myPredicate”,并且有这样的东西:

(from request in DataContext.RequestsTable
select request).Where(myPredicate)
.OrderByDescending(item => item.changeDate)
.Take(10)

它会像下面的 SQL 那样工作吗:

SELECT TOP 10 * FROM RequestsTable
WHERE (<<myPredicate equivalent>>)
ORDER BY ChangeDate DESC

我觉得这很奇怪,因为在我的示例代码中“.Where()”出现在“select”之后。 “select”、“where()”和“orderby()”的相对定位是否有影响?

或者,我可以用类似 sql 的语法来完成这一切吗?例如,是否有某种方法可以在替代语法中使用我的 WHERE 谓词,比如这样?

(from request in DataContext.RequestsTable
where [somehow inject myPredicate]
order by changeDate descending
select request).Take(10)

最佳答案

你在那里有相同的查询,LINQ to SQL 不会评估和生成 T-SQL,直到你完成了一些事情来执行查询(例如 .ToList())。排序不没关系。

事实上,您甚至可以在初始查询赋值后添加 OrderBy 和 Where 子句。

例如

var query = (from x in context.RequestsTable
select x);

query = query.AsQueryable().Where(<>);

return query.ToList(); //executes

等同于:

return (from x in context.RequestsTable
where <>
select x).ToList(); //executes

等同于:

return (from x in context.RequestsTable
selext x).Where(<>).ToList();

我不确定 LINQ to SQL 是否“已死”,但我听说它可能会被整合到 ADO Entity Framework 中。 LINQ to SQL 生成的 T-SQL 远优于 Entity Framework !

关于c# - 在显式 LINQ-to-SQL (C#) 中,顺序很重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745650/

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