foreach循环中的可数更新

时间:2012-10-29 00:58:40

标签: c# linq

我有这样的代码。

IEnumerable<string> imagesFileNames = FindImages(imagesFolder);

 foreach(string imageFileName in imagesFileNames)

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

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

2 个答案:

答案 0 :(得分: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)
        {    
        }
    }
}

答案 1 :(得分:0)

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

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