当使用LINQ而不是foreach时,拒绝访问文件

本文关键字:foreach 拒绝访问 文件 LINQ | 更新日期: 2023-09-27 18:08:41

我得到这个异常

{"调用的目标引发了异常。"}
{"拒绝访问路径'C:''test''test''bin''log'。"}

当我运行此代码时:

if(Directory.Exists(logPath))
{
    return Directory.GetFiles(logPath, "*.log")
                    .Select(file => File.ReadAllText(logPath))
                    .ToList();
}

当我运行以下代码时,我得到NO异常:

if(Directory.Exists(logPath))
{
    var list = new List<string>();
    var filesPath = Directory.GetFiles(logPath, "*.log");
    foreach (var filePath in filesPath)
    {
        string text = File.ReadAllText(filePath);
        list.Add(text);
    }
    return list;
}

为什么我不能使用Linq来获取文本文件的内容?

当使用LINQ而不是foreach时,拒绝访问文件

您的两个代码应该是相同的。这也不会抛出异常。

.Select(file => File.ReadAllText(file))

完整代码

if (Directory.Exists(logPath))
       {
           return Directory
               .GetFiles(logPath, "*.log")
               .Select(file => File.ReadAllText(file))
               .ToList();
       }

请注意:您的异常不是特定于LINQ的。