【发布时间】:2013-05-03 07:36:33
【问题描述】:
我有一些代码:
使用(var userlookup = new UserLookup()) { someThing = someCollection .选择(t => { var user = userLookup.UserLookup(t.UserId); 返回新包装器 { UserString = string.Format("{0} {1} ({2})", user.FirstName, user.LastName, t.UserId), SomeOtherProperty = t.SomeFunction() ETC.. }; }); }当访问someThing 时,我得到一个ObjectDisposedException。这可以通过删除 using 块来解决。如果我这样做:
-
UserLookup会在 Linq 枚举被释放时被释放吗? - 如果是这样,这是怎么发生的?
- 是否有任何方法可以重新构造此代码以在释放可枚举时释放
UserLookup实例,同时仍保持延迟执行?
(我确定我可以在 using 块中调用 ToList() 并且它会正常工作,我可能会这样做,但只是出于好奇)
我还应该提到someThing 是 MVC 视图模型上的一个属性。
【问题讨论】:
标签: c# linq lambda idisposable