I have 2 List objects (simplified):
var fileList = Directory.EnumerateFiles(baseSourceFolderStr, fileNameStartStr + "*", SearchOption.AllDirectories); var filterList = new List<string>(); filterList.Add("ThisFolderName"); filterList.Add("ThatFolderName");
I want to filter the fileLst to return only files containing any of folder names from the filterList. (I hope that makes sense..)
I have tried the following expression, but this always returns an empty list.
var filteredFileList = fileList.Where(fl => fl.Any(x => filterList.Contains(x.ToString())));
I can't seem to make sense of why I am getting nothing, clearly I am missing something, but I have no idea what.
Ok, so it appears I should have been clearer in my question, I was trying to search for files in my fileList with a substring containing string values from my filterList. I have marked the answer below for those who are trying to do a similar thing.
its even easier:
fileList.Where(item => filterList.Contains(item))
in case you want to filter not for an exact match but for a "contains" you can use this expression:
var t = fileList.Where(file => filterList.Any(folder => file.ToUpperInvariant().Contains(folder.ToUpperInvariant())));