将目录中的文件名复制到通用列表中

Copy filename from directoriy into generic list

我有一个奇怪的行为,不知道从这里去哪里。我正在尝试从目录中读取文件名并将其添加到 <string>.

类型的通用列表中
string path = @"C:\mydir\";

foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName))
{
    GenericList1.Add(s);

}

我收到错误:

Object reference not set to an instance of an object.

当我调试时,我看到变量 s 显示文件名作为值。事实上,我可以在使用时看到值:

foreach (string s in Directory.GetFiles(path, "*.bak").Select(System.IO.Path.GetFileName))
{
    System.Windows.Forms.MessageBox.Show(s);           
}

有人知道我这里可能哪里出错了吗?

 foreach (string s in Directory.GetFiles(path, "*.bak").Select(p => Path.GetFileName(p)))
        {
            GenericList1.Add(s);

        }  

Select 方法需要一个函数来对每个对象执行。最简单的方法是使用简单的 lambda。

您基本上是在使用 lambda 时创建匿名方法或函数。 Select 方法需要知道您想对集合中的每个项目执行什么功能或操作。在这种情况下,您想要获取 GetFiles 方法返回的集合中每个项目的文件名。如果您需要更多解释,请告诉我。