c# distinct自定義重寫方法
現在有一個類定義如下
public class CreateTestUnitSrvInputCollection
{
private int mParentId;
/// <summary>
/// 所屬構建標籤ID/或資料夾ID
/// </summary>
public int ParentId
{
get
{
return mParentId;
}
set
{
mParentId = value;
}
}
private int mParentType;
/// <summary>
/// 所屬父類的檔案型別 2資料夾 1構建標籤
/// </summary>
public int ParentType
{
get
{
return mParentType;
}
set
{
mParentType = value;
}
}
}
現在有一個List<CreateTestUnitSrvInputCollection > 其中裡面有一些資料是相同的(即其中ParentId和ParentType的值都相同)
那麼這個時候你如果呼叫distinct的方法話 是去除不掉這些相同項的 因為在c#中例項化一個類 類是引用型別 所以每
個類都不相同
所以這個時候 如果你想自定義去除相同項的話 那就要繼續IEqualityComparer介面
實現程式碼如下
public class CreateTestUnitSrvInputCollection : System.Collections.Generic.IEqualityComparer<CreateTestUnitSrvInputCollection>
{
private int mParentId;
/// <summary>
/// 所屬構建標籤ID/或資料夾ID
/// </summary>
public int ParentId
{
get
{
return mParentId;
}
set
{
mParentId = value;
}
}
private int mParentType;
/// <summary>
/// 所屬父類的檔案型別 2資料夾 1構建標籤
/// </summary>
public int ParentType
{
get
{
return mParentType;
}
set
{
mParentType = value;
}
}
#region IEqualityComparer<CreateTestUnitSrvInputCollection> 成員
public bool Equals(CreateTestUnitSrvInputCollection x, CreateTestUnitSrvInputCollection y)
{
//這個地方就是定義判斷什麼情況下是相同的元素程式碼 如果你就是想通過一個欄位去判斷 那麼就用一個 這個就行x.ParentId==y.ParentId
return x.ParentId==y.ParentId&&x.ParentType==y.ParentType;
}
public int GetHashCode(CreateTestUnitSrvInputCollection obj)
{
return 0;
}
#endregion
}