Search code examples
c#linqienumerablefileinfo

How to know if Array FileInfo[] contains a file


I have the following code, I receive an error at "if statement" saying that FileInfo does not contain a definition "Contains"

Which is the best solution for looking if a file is in a directory?

Thanks

string filePath = @"C:\Users\";
DirectoryInfo folderRoot = new DirectoryInfo(filePath);
FileInfo[] fileList = folderRoot.GetFiles();

IEnumerable<FileInfo> result = from file in fileList where file.Name == "test.txt" select file;
if (fileList.Contains(result))
{
      //dosomething
}

Solution

  • Remove fileList.Contains(result) and use:

    if (result.Any())
    {
    
    }
    

    .Any() is a LINQ keyword for determining whether result has any items in it or not. Kinda like doing a .Count() > 0, except quicker. With .Any(), as soon as an element is found the sequence is no longer enumerated, as the result is True.

    In fact, you could remove the last five lines of your code from from file in... to the bottom, replacing it with:

    if (fileList.Any(x => x.Name == "test.txt"))
    {
    
    }