小编典典

LINQ-to-SQL是否支持可组合查询?

sql

作为一个非C#精通的程序员,我对LINQ查询的评估语义感到好奇,如下所示:

var people = from p in Person
             where p.age < 18
             select p

var otherPeople = from p in people
                  where p.firstName equals "Daniel"
                  select p

假设这Person是一个定义了ageandfirstName字段的ADO实体,那么从数据库的角度来看,这将做什么?具体来说,是否people将运行查询以生成内存中的结构,然后由otherPeople查询查询该结构?还是otherPeople仅从中提取有关查询的数据people,然后产生一个新的数据库对等查询的结构?因此,如果我遍历这两个查询,将执行多少个SQL语句?


阅读 160

收藏
2021-04-22

共1个答案

小编典典

它们是可组合的。这是可能的,因为LINQ查询实际上是表达式(作为数据的代码),诸如LINQ-to-SQL之类的LINQ提供程序可以评估并生成相应的SQL。

由于LINQ查询的计算是延迟的(例如,直到您遍历元素时才会执行),因此显示的代码实际上不会触及数据库。直到您遍历其他人,否则人们才会生成并执行SQL。

2021-04-22