派手なLINQクエリを使用しList<FileInfo>
て、メソッド()に渡しList<FileInfo> oldList, List<FileInfo> newList
、2つのリストの間にどのような違いがあるかを確認することで、を返すことはできますか?
基本的に、oldListで使用できなかった、newListに追加されたファイルのリストを取得したいと思います。
派手なLINQクエリを使用しList<FileInfo>
て、メソッド()に渡しList<FileInfo> oldList, List<FileInfo> newList
、2つのリストの間にどのような違いがあるかを確認することで、を返すことはできますか?
基本的に、oldListで使用できなかった、newListに追加されたファイルのリストを取得したいと思います。
以下に示すforIEqualityComparer
を指定します。FileInfo
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();
}
}
次のコードを使用して、2つのリストの違いを見つけることができます。
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());