C# 从列表中删除元素或根本不将它们放入

C# 从列表中删除元素或根本不将它们放入,c#,list,foreach,C#,List,Foreach,我有一个文件名列表。 我需要排除名称中包含关键字的文件 我试过: List<string> fileList = Directory.GetFiles(path).ToList(); foreach (string file in fileList) { if (file.Contains("KEYWORD")) { fileList.Remove(file); } } List fi

我有一个文件名列表。 我需要排除名称中包含关键字的文件

我试过:

List<string> fileList = Directory.GetFiles(path).ToList();    
foreach (string file in fileList)
    {
        if (file.Contains("KEYWORD"))
        {
             fileList.Remove(file);
        }
    }
List fileList=Directory.GetFiles(path.ToList();
foreach(文件列表中的字符串文件)
{
if(file.Contains(“关键字”))
{
文件列表。删除(文件);
}
}
获取错误:集合已被修改。枚举操作可能无法启动。 但它不起作用。你知道为什么还是有更好的解决办法

谢谢。

试试这个

  List<string> fileList = new List<string>();
        fileList.Add("ioerhg");
        fileList.Add("ioerhg");
        fileList.Add("KEYWORD");

        List<string> fileListNew  = fileList.Where(x => !x.Contains("KEYWORD")).ToList();
List fileList=newlist();
文件列表。添加(“ioerhg”);
文件列表。添加(“ioerhg”);
文件列表。添加(“关键字”);
List fileListNew=fileList.Where(x=>!x.Contains(“关键字”)).ToList();

您的问题不清楚,尽管这应该可以工作,因为我觉得这很好。您可以分享您遇到的错误吗?它不应该工作。他正在更改他在foreach中列举的收藏。您可以使用传统的for循环,并以相反的顺序检查元素。这样,您就可以安全地浏览列表中的所有位置。如果您从开始到结束,假设您删除了i=1处的项。然后您必须重新检查i=1,而不是转到i=2。