Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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
}
like image 463
kmxillo Avatar asked Jun 13 '12 14:06

kmxillo


2 Answers

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

}
like image 74
Grant Winney Avatar answered Nov 01 '22 12:11

Grant Winney


you could check the count of result

 if (result.Count() > 0)
 {
    //dosomething
 }
like image 43
Dxsolo Avatar answered Nov 01 '22 12:11

Dxsolo