我有以下代碼:如何避免在linq表達式中訪問修改後的閉包?
ServiceSoapClient service = new ServiceSoapClient();
var dataSource = (from u in _db.Sessions
where u.DeletedOn == null
select new
{
SessionId = u.UploadSessionId,
FileName = u.FileName,
CreatedBy = u.User.UserName,
Partner = u.Company.Name,
CreatedOn = u.CreatedOn,
Visible = service.IsSessionProcessing(u.UploadSessionId)
})
.OrderByDescending(x => x.CreatedOn);
...這裏當然問題是訪問修改關閉,因爲當我使用dataSource
地方即預製棒.ToList()
或類似的表達實際上是計算Visible = service.IsSessionProcessing(u.UploadSessionId)
部分。
這裏的問題是我無法立即執行.ToList()
,因爲我需要將它用作控件的數據源。
Linq有什麼方法可以避免這種情況嗎?我可以在表達式本身中使用局部變量,以便使用真實值進行計算嗎?
除非我失去了一些東西,這'u'是* *已經向當地的表情......是什麼報告,作爲改性封閉? –
當我使用返回的匿名類型集合...來自service.IsSessionProcessing(u.UploadSessionId)的所有值等於最後一個... – TheBoyan
好吧,我猜他們都是「真」或'false',所以沒有*許多選項;然而,'SessionId'是不同的嗎? –