AsEnumerable和AsQueryable

时间:2015-04-08 01:49:59

标签: linq-to-entities

var test1 = DB.UnAuthPriorityLevelTypes.AsEnumerable();
var test2 = DB.UnAuthPriorityLevelTypes.AsQueryable();
var test3 = DB.UnAuthPriorityLevelTypes.ToList();
var test4 = DB.UnAuthPriorityLevelTypes.AsEnumerable();
var test5 = DB.UnAuthPriorityLevelTypes.AsQueryable();

在上述五个陈述中,如果我查看test1test2中的值的计数,那么它是0,但是test3test4,{ {1}}的计数值为3,应该是这种情况。为什么呢?

更新

即使test1显示为0结果,我也能够成功循环并获取值 我认为问题是由于EF的延迟加载行为,但我试图禁用它并运行它但没有去

test5

1 个答案:

答案 0 :(得分:0)

由于Linq的延迟执行,您应该阅读AsEnumerableAsQueryable作为要执行的查询的声明。

运行ToList后,您强制执行查询,而datacontext将包含DB.UnAuthPriorityLevelTypes中的所有行,因此Count将显示正确的数字,只要上下文不会改变没有处理。

LazyLoadingEnabled标记会影响相关的相关行,请参阅此MSDN文章。