当前位置: 首页 > 面试题库 >

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

巢海
2023-03-14
问题内容

作为一个非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语句?


问题答案:

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

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



 类似资料:
  • 问题内容: 我已经linq到nhibernate查询: 而且它的编译效果很好,但是如果我使用它,则会抛出异常: NotSupportedException int32 CompareTo(System.String,System.String) 如何在两个值之间使用linq查询字符串值。像在SQL中一样:从ID在a和b之间的表中选择*。 问题答案: NHibernate的Linq提供程序是非常可扩

  • 问题内容: 给定一个简单的模式,例如PurchaseOrders {OrderId,Total,LineItemCount},我想为一些简单的统计信息生成一个简单的查询,如下所示: 但是在Linq to Sql中,我正在努力将其纳入一个查询中。 目前,我有这个: 有没有一种方法可以将其作为一个查询来完成? 问题答案: 我能想到的是给它一个假的group-by子句。它可以正常工作,并能按您期望的那样

  • 问题内容: 我对此进行了一些研究,并浏览了StackOverflow上的一些文章以及一些博客文章,但是没有找到确切的答案。我还读到可以使用4.0框架来实现,但尚未找到任何支持证据。 所以我的问题是,是否可以通过LINQ to SQL查询执行SOUNDEX? 问题答案: 您可以通过使用伪造的UDF在数据库上执行此操作;在部分类中,向数据上下文添加一个方法: 您可以使用像这样的表达式:

  • 正在寻找与ApacheIgnite的比较——Hazelcast是否支持SQL?

  • 问题内容: 我正在尝试在SQL Server Profiler(2005)中查看Linq生成的SQL到SQL。 我可以看到从linq到sql以外的任何其他设备发送到服务器的sql。 我敢打赌,我需要更改跟踪的事件选择,但不确定要选择什么。 我目前仅选择此选项:SQL:StmtCompleted-TextData和SPID 我既不想使用数据上下文日志记录,也不想使用SQL Debug Visuali

  • 问题内容: 根据我所看到的LINQ的许多示例,我正在使用类似于以下代码的代码创建自己的数据上下文和表: 但是对于每个表(小部件,汽车等),我都会得到警告 字段’TableName’从未分配 。我在Google上找不到任何也存在此问题的人。我不觉得我做错了什么,因为我只是复制从不同地方看到的LINQ示例。那么这个警告是怎么回事呢?它警告我一个真正的问题吗?还是我错过了什么? 问题答案: 是的,他们是