gpt4 book ai didi

c# - 如何以及何时翻译和评估 LINQ 查询?

转载 作者:太空狗 更新时间:2023-10-29 21:40:19 25 4
gpt4 key购买 nike

我有一个 LINQ to SQL 查询如下:

var carIds = from car in _db.Cars
where car.Color == 'Blue'
select car.Id;

最后会翻译成下面的sql:

select Id from Cars 
where Color = 'Blue'

我读到的阶段是:

  1. LINQ to Lambda 表达式
  2. Lambda 表达式到表达式树
  3. SQL 语句的表达式树
  4. 执行 SQL 语句

那么,我的问题是何时以及如何翻译和执行它?

我知道当我的“carIds”变量在 foreach 循环中被访问时,阶段 4 发生在运行时。

foreach(var carId in carIds) // here?
{
Console.Writeline(carId) // or here?
}

其他阶段呢?它们什么时候发生?在编译时还是运行时?在哪一行(在定义上或定义之后,访问时或访问之前)?

最佳答案

您所说的是延迟执行 - 本质上,linq to SQL 查询将在您尝试枚举结果时执行(例如,对其进行迭代, .ToArray() 等)。

在您的示例中,语句在以下行中执行:

foreach(var carId in carIds)

请参阅关于 LINQ and Deferred Execution 的这篇 MSDN 文章

关于c# - 如何以及何时翻译和评估 LINQ 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14156104/

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