1
我有一些代碼:處置資源的lambda
using(var userlookup = new UserLookup()) { someThing = someCollection .Select(t => { var user = userLookup.UserLookup(t.UserId); return new Wrapper { UserString = string.Format("{0} {1} ({2})", user.FirstName, user.LastName, t.UserId), SomeOtherProperty = t.SomeFunction() etc.. }; }); }
當someThing
訪問我得到一個ObjectDisposedException
。這可以通過刪除使用塊來解決。如果我這樣做:
- 將
UserLookup
配置Linq枚舉時? - 如果是這樣如何發生?
- 有沒有什麼辦法重新構造這段代碼來處置
UserLookup
實例,當枚舉被拋棄時仍然保持延期執行?
(我敢肯定,我可以調用ToList()的使用塊中,它會很好地工作,我可能會做,但只是好奇的緣故)
我還要提到的是someThing
是MVC視圖模型上的屬性。
所以爲了保持defferred執行,我必須將foreach包裝在using塊中,並將該屬性轉換爲一個將UserLookup作爲參數的方法。說得通。謝謝! – Iain 2013-05-02 23:44:46