Linq to EF:返回IQueryable对象的困惑

时间:2018-05-17 04:38:36

标签: c# sql linq linq-to-entities

据我所知,如果我调用下面的代码,将从数据库中查询数据并在本地内存返回实际对象。调用此代码后,稍后对列表的操作将不会再次调用数据库:

db.Context.Where(...).ToList()

如果我不使用ToList只使用Where或Select选项,它将返回IQueryable<>宾语。

var data = db.Context.Where(...).Select (...) or db.Context.Where(...);

这是否意味着,该方法尚未调用数据库来获取数据,直到我调用ToList,First()等...

foreach (var a in data) 
{
   var b = a.SomeCollection.ToList() 
}

1 个答案:

答案 0 :(得分:0)

是的,您可以根据需要使用IQuery<>创建和操作您的查询接口

如果您看到它的属性,您会发现,它都是关于处理SQL查询的。它有一个ProviderQueryConnectionString等等。

实际上,当你调用ToList<>ToArray<>或类似的东西时,它只是命令IQueryable Object执行它对数据库的SQL查询。