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