2012-10-29 62 views
-5

我有這樣的代碼。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

它爲什麼不起作用?它是否懶惰? :) –

回答

0

謝謝大家。我意識到,在你的評論後,這是一個壞主意。 並決定改變我的方法。我用一個定時器來解決它,並按順序調用 圖像的名稱。

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

請再次格式化該代碼示例.... – SpaceBison

1

歡迎來到Stackoverflow。您無法更改在該循環中迭代的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) 
     {  
     } 
    } 
}