两个List <fileinfo> </fileinfo>之间的区别

时间:2011-05-15 09:06:39

标签: c# .net linq list list-comparison

我可以使用花哨的LINQ查询返回List<FileInfo>,方法是将其传递给方法(List<FileInfo> oldList, List<FileInfo> newList),并查看两个列表之间存在哪些差异?

基本上,我想获取添加到newList的所有文件的列表,这些文件在oldList中不可用。

1 个答案:

答案 0 :(得分:16)

如果IEqualityComparer显示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();
    }
}

您可以使用以下代码查找两个列表之间的区别:

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