I need to write a code in C# that will select a list of file names from a data table and delete every file in a folder that is not in this list.
One possibility would be to have both ordered by name, and then loop through my table results, and for each result, loop through my files and delete them until I find a file that matches the current result or is alphabetically bigger, and then move to the next result without resetting the current file index.
I haven’t tried to actually implement this, but seems to me that this would be an O(n) since each list would be looped through just once (ignoring the sorting both lists part). The only thing I’m not sure about is whether I can be 100% sure both the file system and the database engine will sort exactly the same way (will they both consider “_” smaller than “-” and stuff like that). If not, the algorithm above just wouldn’t work at all. (By the way this is a Jet Engine database.)
But since this is probably not such an uncommon problem you guys might already know a better solution. I tried search the web but couldn’t find anything. Perhaps a more effective solution would be to put each list into a HashSet and find their difference.
folderFiles(IEnumerable<string>)filesToKeep(IEnumerable<string>)Code Sample :