我可以使用一个花哨的 LINQ 查询来返回 a List<FileInfo>
,通过在方法 ( List<FileInfo> oldList, List<FileInfo> newList
) 中传递它,并查看两个列表之间有什么区别吗?
基本上,我想获取添加到 newList 中的任何文件的列表,这些文件在 oldList 中不可用。
我可以使用一个花哨的 LINQ 查询来返回 a List<FileInfo>
,通过在方法 ( List<FileInfo> oldList, List<FileInfo> newList
) 中传递它,并查看两个列表之间有什么区别吗?
基本上,我想获取添加到 newList 中的任何文件的列表,这些文件在 oldList 中不可用。
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());