代码1:
var orgUsers = _ef1.GetList(m => true).Distinct();
var result =
(from apply in _ef2.GetList()
join orgUser in orgUsers on apply.ManagerUserId equals orgUser.UserID
select apply).ToList();
代码2:
var orgUsers = _ef1.GetList(m => true).Distinct().AsEnumerable();
var result =
(from apply in _ef2.GetList().AsEnumerable()
join orgUser in orgUsers on apply.ManagerUserId equals orgUser.UserID
select apply).ToList();
代码1会报出错误指定的 LINQ 表达式包含对与不同上下文关联的查询的引用。
但代码2不会,这个AsEnumerable是不是像ToList一样,将数据缓存到本地?
不是。但是你可以这么理解当做是。
为什么?
@北在北方: 几个知识点
1、Iqueryable是Inherit IEnumerable的,所以AsEnumerable只是做的返回类型的转换。
此时并不会本地化。
2、但是IEnumerable数据在另外一个Iqueryable表达式树解析的时候,会本地化。