Linq to objects 表达式返回一个对象,在枚举时从序列中产生元素。通常,延迟的 LINQ-to-Object 方法充当管道,因此序列的每个元素在处理下一个元素之前都流过处理管道。
a) 但是如果 Linq-to-Objects 查询对 Linq-to-Entities 查询的结果进行操作,那么当 foreach
尝试迭代时search
,在处理下一个元素之前,每个元素是否再次流过整个处理序列(换句话说,是第一个元素从从数据库中检索到的序列中Enumerable.Where
,然后由处理,Enumerable.SelectMany
然后是从数据库中检索的下一个元素)或者是一次从数据库中检索到的整个元素集(当foreach
尝试从序列中读取第一个元素时) ,然后这些元素才开始流经 Linq-to-Objects 运算符的处理管道?
var search = context.Contacts.AsEnumerable().
Where(s => s.ContactID > 10).SelectMany(s => s.Address);
谢谢你