7

派手なLINQクエリを使用しList<FileInfo>て、メソッド()に渡しList<FileInfo> oldList, List<FileInfo> newList、2つのリストの間にどのような違いがあるかを確認することで、を返すことはできますか?

基本的に、oldListで使用できなかった、newListに追加されたファイルのリストを取得したいと思います。

4

1 に答える 1

15

以下に示す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());
于 2011-05-15T09:20:39.530 に答える