The*_*ght 6 c# sql linq asp.net lambda
我有一个LINQ to SQL Query如下:
var carIds = from car in _db.Cars
where car.Color == 'Blue'
select car.Id;
Run Code Online (Sandbox Code Playgroud)
以上将最终翻译成下面的sql:
select Id from Cars
where Color = 'Blue'
Run Code Online (Sandbox Code Playgroud)
我读过这些阶段是:
所以,我的问题是何时以及如何翻译和执行?
我知道第4阶段发生在运行时,我的"carIds"变量在foreach循环中被访问.
foreach(var carId in carIds) // here?
{
Console.Writeline(carId) // or here?
}
Run Code Online (Sandbox Code Playgroud)
其他阶段呢?他们什么时候发生?在编译时或运行时?在哪一行(定义上或定义之后,访问时或访问之前)?
您所说的是延迟执行- 本质上,linq to SQL 查询将在您尝试枚举结果时执行(例如迭代它,.ToArray() it 等)。
在您的示例中,该语句在以下行执行:
foreach(var carId in carIds)
Run Code Online (Sandbox Code Playgroud)
请参阅有关LINQ 和延迟执行的 MSDN 文章