更好的比较文件的方法?

Alo*_*ada 0 c# performance foreach

我有这个方法接收一个IEnumerable的字符串,它基本上是一个文件列表(PDF),然后在方法内部我得到一个String数组并用来自不同位置(TIFF)的文件填充它,这个主要的想法方法是匹配从接收列表中的所有文件到我在方法内填充的另一个列表中的文件,并确保每个PDF都有相应的TIFF文件.现在这个方法有效,但我只是想知道是否有更好的方法来做这一切.

    private bool MatchingFiles(IEnumerable<string> files)
    {
        var outputFiles = Directory.GetFiles(TifOutput, "*.tif");
        bool foundmatch = true;
        foreach (string file in files)
        {
            string[] strArray = file.Split('\\');

            string fileName = strArray[strArray.Length - 1].Replace("PDF", "");
            bool filematch = false;
            foreach (string outputFile in outputFiles)
            {
                if (outputFile.Contains(fileName))
                {
                    filematch = true;
                    break;
                }
            }
            if (!filematch)
            {
                LogMessage(string.Format("File Not Available Yet: {0}", fileName), Level.Info, null);
                foundmatch = false;
                break;
            }
        }
        return foundmatch;
    }
Run Code Online (Sandbox Code Playgroud)

在此先感谢任何能帮助我的人:)!

Hab*_*bib 5

使用Path.GetfileNameWithoutExtension只得到文件名,然后使用Enumerable.Except类似:

你可以做:

return files.Select(r => Path.GetFileNameWithoutExtension(r))
            .Except(outputFiles.Select(r => Path.GetFileNameWithoutExtension(r)))
            .Any();
Run Code Online (Sandbox Code Playgroud)

要么

return files.Select(Path.GetFileNameWithoutExtension)
            .Except(outputFiles.Select(Path.GetFileNameWithoutExtension))
            .Any();
Run Code Online (Sandbox Code Playgroud)