【发布时间】:2017-05-29 14:29:35
【问题描述】:
我有一个包含许多变量的对象,我想要一个不同的函数来比较两个变量(customerid,status)来考虑重复项,我正在使用下面的比较,但我希望选择优先级如何distinct 函数将删除重复项。
有一个名为“file”的字符串变量,它将具有文件的名称(都具有相同的扩展名),但扩展名前可能有3个不同的后缀(“”,“_0”,“TEXT”)。例如
“文件名.txt”
“文件名_0.txt”
“file_Name_TEXT.txt”
当有重复时,希望“file_Name.txt”优先保留。我该怎么做?
class CustomerComparer : IEqualityComparer<Customer>
{
public bool Equals(Customer x, Customer y)
{
if (Object.ReferenceEquals(x, y)) return true;
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.customerid == y.customerid && x.status == y.status;
}
public int GetHashCode(Customer aprov)
{
if (Object.ReferenceEquals(aprov, null)) return 0;
int hashProductName = aprov.status == null ? 0 : aprov.status.GetHashCode();
int hashProductCode = aprov.customerid.GetHashCode();
return hashProductName ^ hashProductCode;
}
}
【问题讨论】:
标签: c# distinct iequalitycomparer