2011-05-15 34 views
7

List<FileInfo>'u bir yöntemle (List<FileInfo> oldList, List<FileInfo> newList) ileterek ve iki liste arasında ne gibi farklılıklar olduğunu görerek bir fantezi LINQ sorgusu kullanabilir miyim?İki Liste arasındaki fark <FileInfo>

Temel olarak, yeniList'e eklenen ve eskiList'te bulunmayan dosyaların bir listesini almak istiyorum.

cevap

15

FileInfo için bir IEqualityComparer aşağıda gösterilen Verilen:

public class FileInfoEqualityComparer : IEqualityComparer<FileInfo> 
{ 
    public bool Equals(FileInfo x, FileInfo y) 
    { 
     return x.FullName.Equals(y.FullName); 
    } 

    public int GetHashCode(FileInfo obj) 
    { 
     return obj.FullName.GetHashCode(); 
    } 
} 
Sen iki liste arasındaki farkı bulmak için kod aşağıdaki kullanabilirsiniz

:

var allItems = newList.Union(oldList); 
var commonItems = newList.Intersect(oldList); 
var difference = allItems.Except(commonItems, new FileInfoEqualityComparer()); 

ürün newList listesine eklenir bulmak için, kullanım aşağıdaki kodu :

var addedItems = newList.Except(oldList, new FileInfoEqualityComparer());