创建只执行1次查询的linq查询

创建只执行1次查询的linq查询,linq,Linq,我有以下两个表格: *表 *表B TableA与tableB有1对多关系,因此tableB有一列,其中包含TableA的外键 TableA将用于创建一个名为classA的c#类,该类有一个bool属性,指示它在TableB中是否有名为HasRecords的相关记录 我可以这样创建它: TableA.Select(s => new ClassA { Hasrecords = s.TableB.Any() } 这会因为任何函数而创建一个查询还是多个查询?是否有其他方法可以在不触发

我有以下两个表格: *表 *表B

TableA与tableB有1对多关系,因此tableB有一列,其中包含TableA的外键

TableA将用于创建一个名为classA的c#类,该类有一个bool属性,指示它在TableB中是否有名为HasRecords的相关记录

我可以这样创建它:

TableA.Select(s => new ClassA {
      Hasrecords = s.TableB.Any()
}

这会因为任何函数而创建一个查询还是多个查询?是否有其他方法可以在不触发多个查询执行的情况下在线执行此操作,或者我必须求助于表值函数?

这取决于所使用的查询提供程序(ORM)。如果你想到的是EF6,是的,它将转换为单个SQL查询。@Ivan Stoev:是的,我指的是EF6。我问这个问题的原因是因为我现在对立即执行感到有点困惑。Any()是否不会导致立即执行?当在
IQueryable
表达式树中使用时-否。您可以通过使用类似
var sql=db.TableA.Select(…).ToString()的内容轻松检查这一点
并在VS Locals或Watch窗口中检查
sql
变量。或者获取LINQPad的副本并查看sql翻译以获取查询。