How to know if Array FileInfo[] contains a file

kmxillo picture kmxillo · Jun 13, 2012 · Viewed 9.6k times · Source

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
}

Answer

Grant Winney picture Grant Winney · Jun 13, 2012

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"))
{

}