C# foreach循环中的ienumerable更新

C# foreach循环中的ienumerable更新,c#,linq,C#,Linq,我有这样的代码 IEnumerable<string> imagesFileNames = FindImages(imagesFolder); foreach(string imageFileName in imagesFileNames) { //my code //IEnumerable<string> imagesFilesNames = FindImages(images

我有这样的代码

IEnumerable<string> imagesFileNames = FindImages(imagesFolder);

 foreach(string imageFileName in imagesFileNames)

            {
                //my code
                //IEnumerable<string> imagesFilesNames = FindImages(imagesFolder);
                // it doesn't work!!  
            }
IEnumerable imagesFileNames=FindImages(imagesFolder);
foreach(imagesFileNames中的字符串imageFileName)
{
//我的代码
//IEnumerable imagesFilesNames=FindImages(imagesFolder);
//它不起作用!!
}
我可以更新foreach循环中的IENumerable集合吗

欢迎光临。您不能更改在该循环中迭代的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)
        {    
        }
    }
}
IEnumerable imagesFileNames=FindImage(imagesFolder,*.jpg,true);
私有IEnumerable FindImage(字符串目录、字符串扩展名、布尔值是可执行的)
尝试
{
foreach(Directory.GetDirectories(dir)中的字符串d)
{
尝试
{
foreach(Directory.GetFiles(d,扩展名)中的字符串f)
{
imagesFileNames.Add(f);
}
if(isRecursive)FindImages(d,扩展名,true);
}
捕获(例外)
{    
}
}
}

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

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

你是说在foreach中修改集合。。。通过修改,我的意思是从集合中添加或删除一个项目?“它不工作!!”——这没有帮助!!为什么不起作用?是懒惰吗?:)我甚至不明白你在这个循环中想做什么。在循环的每一次迭代中,您都会尝试完全清除集合,并用一个新集合替换它。如果它真的“起作用”,它永远不会结束。你为什么一开始就反复浏览这个系列?为了爱情。。。在这些括号内,您想做什么?您希望对该集合执行什么操作?