There is a rather pretty solution how to get all the items from one generic collection (List<T>) which are not presented in the second one.

You can use simply the syntax like this:

   IEnumerable<MyFile> res = list1.Except(list2);

 

In the example below I wanted to get the list of different files in two directories. This code returns filenames from the directory "dir1" which are not presented in "dir2".