簡體   English   中英

C#中兩個對象數組之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM