我可以使用花哨的 LINQ 查询返回 List<FileInfo> ,通过将它传递到方法 ( List<FileInfo> oldList, List<FileInfo> newList ) 中,并查看两个列表之间有什么区别吗?

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

最佳答案

给定 IEqualityComparerFileInfo 如下所示:

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

关于c# - 两个 List<FileInfo> 的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6007495/

10-15 03:53