Linq to Entities是否包含跨呼叫的工作?

时间:2010-07-30 17:59:47

标签: .net linq linq-to-entities

如果我有这样的话:

x = from f in first.Include("second")
    where f.id == 1
    select f

y = from s in second
    where s.first.id == 1
    select s

是否会将两个查询发送到我的数据库?我意识到我可以设置y = f.second以确保只进行一次调用,但我经常想要考虑我的代码,这样我就可以进行第二次调用,而不管我是否完成了第一次调用 - 必须进行调用你可以传递f.second的重载很烦人。

1 个答案:

答案 0 :(得分:1)

假设您枚举查询,将进行两次调用。

  

但是我经常想要考虑我的代码,以便我可以进行第二次调用,而不管我是否完成了第一次

您是否有理由要将查询分开?您编写的两个查询是相同的。您已经在查询x中检索了所需的所有数据。您不需要执行第二个查询,因为您可以执行

 x.Seconds;
 //or if there is more than one result in x
 x.SelectMany(y=>y.Seconds);