2011-05-15 23 views
7

के बीच अंतर List<FileInfo> को एक विधि (List<FileInfo> oldList, List<FileInfo> newList) में पास करके, और दो सूचियों के बीच क्या अंतर है, यह देखने के लिए मैं एक फैंसी LINQ क्वेरी का उपयोग कर सकता हूं?दो सूची <FileInfo>

असल में, मैं newList को जोड़ा किसी भी फाइल, कि oldList में उपलब्ध नहीं थे की एक सूची प्राप्त करना चाहते हैं।

उत्तर

15

देखते हुए FileInfo के लिए एक IEqualityComparer नीचे दिखाया गया है:

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(); 
    } 
} 

आप दो सूचियों के बीच अंतर को खोजने के लिए कोड निम्न का उपयोग कर सकते हैं:

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

आइटम newList सूची में जोड़ा ढूंढने के लिए, निम्न कोड का उपयोग करें :

var addedItems = newList.Except(oldList, new FileInfoEqualityComparer()); 
संबंधित मुद्दे