foreach循环中的ienumerable更新

问题描述:

我有这样的代码。foreach循环中的ienumerable更新

IEnumerable<string> imagesFileNames = FindImages(imagesFolder); 

foreach(string imageFileName in imagesFileNames) 

      { 
       //my code 
       //IEnumerable<string> imagesFilesNames = FindImages(imagesFolder); 
       // it doesn't work!! 
      } 

我可以更新foreach循环中的IENumerable集合吗?

+0

你的意思修改的集合,而一个foreach里面是......并通过修改,我的意思是添加或从集合删除一个项目? “ – LightStriker

+2

”它不起作用!!“ - 这是没有帮助的! – zerkms

+2

它为什么不起作用?它是否懒惰? :) –

谢谢大家。我意识到,在你的评论后,这是一个坏主意。 并决定改变我的方法。我用一个定时器来解决它,并按顺序调用 图像的名称。

private void timer2_Tick(object sender, EventArgs e) 
{ 
a++; 
imageFileName = "IMAGES\DB\"+a+".jpg" 
\\\my code 
} 
+0

请再次格式化该代码示例.... – SpaceBison

欢迎来到*。您无法更改在该循环中迭代的IEnumerable。

它看起来像你想递归地查找文件:

IEnumerable<string> imagesFileNames = FindImages(imagesFolder, "*.jpg", true); 

private IEnumerable<string> FindImages(string dir, string extension, bool isRecursive) 
try 
{ 
    foreach (string d in Directory.GetDirectories(dir)) 
    { 
     try 
     { 
      foreach (string f in Directory.GetFiles(d, extension)) 
      { 
       imagesFileNames.Add(f); 
      } 
      if (isRecursive) FindImages(d,extension, true); 
     } 
     catch (Exception) 
     {  
     } 
    } 
}