[英]Difference between two array of objects in C#
我有一個稱為輸入的對象列表...
我獲取此列表並對其進行過濾,以獲取對象Output的另一個列表。
我想檢查輸出列表與輸入列表相比是否有任何更改。
這兩個列表屬於同一類型
var nonintersect = modifiedList.Except(originalList);
並且您需要通過isActive字段實現比較器
您可以為此使用IEquality Comparer
這是IEquality的通用實現
public class GenericEqualityComparer<T> : IEqualityComparer<T>
{
private Func<T, T, bool> _equalsFunction;
private Func<T, int> _hashCodeFunction;
public GenericEqualityComparer(Func<T, T, bool> equalsFunction, Func<T, int> hashCodeFunction)
{
if (equalsFunction == null) throw new ArgumentException();
if (hashCodeFunction == null) throw new ArgumentException();
_equalsFunction = equalsFunction;
_hashCodeFunction = hashCodeFunction;
}
public bool Equals(T x, T y)
{
return _equalsFunction(x, y);
}
public int GetHashCode(T obj)
{
return _hashCodeFunction(obj);
}
}
樣品用法
var difference = List1.Except(list2, new GenericEqualityComparer<Product>((x, y) => x.IsActive== y.IsActive && y.Id== y.Id, x => x.ID.GetHashCode()));
看看msdn
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.