foreach (var d in data.OfType<FtpData>().Where(fd => !string.IsNullOrEmpty(fd.LocalPath)))
{
d.LocalPath = Url.Content(d.LocalPath);
}
當,如果我檢查「數據」的localPath的值仍然是原來的循環完成後,它並沒有改變。爲什麼? OfType()是否創建對象的副本?
循環正確執行 - 我可以在它內部斷點並查看屬性值更改 - 但是一旦退出循環,更改就會丟失。
UPDATE:
如果我這樣做:
var data2 = data.ToList();
,並切換到使用數據2代替,然後它工作在foreach。我不明白爲什麼,但是在調試器中查看'data'的實際類型是System.Linq.Enumerable.WhereSelectEnumerableIterator ...可能與它有關係嗎?
是'FtpData'類還是結構? – Caramiriel 2014-09-24 06:02:20
我想你需要包括'數據'是如何聲明和填充的,以便我們在這方面進一步提供幫助 – 2014-09-25 07:33:14