Let's say for example this is your class:
private class Foo
{
public readonly string trackingNumber;
public readonly string orderNumber;
public Foo(string trackingNumber, string orderNumber)
{
this.trackingNumber = trackingNumber;
this.orderNumber = orderNumber;
}
}
Getting unique items by trackingNumber
and orderNumber
can be achieved by leveraging Distinct method passing appropriate comparer:
private class ByTrackingNumberAndOrderComparer : IEqualityComparer<Foo>
{
public bool Equals(Foo x, Foo y)
{
return string.Equals(x.trackingNumber, y.trackingNumber)
&& string.Equals(x.orderNumber, y.orderNumber);
}
public int GetHashCode(Foo obj)
{
return (obj.trackingNumber == null ? 0 : obj.trackingNumber.GetHashCode())
^ 397 ^ (obj.orderNumber == null ? 0 : obj.orderNumber.GetHashCode());
}
}
Usage:
Foo[] foos = Generate(150000);
Foo[] distinct = foos.Distinct(new ByTrackingNumberAndOrderComparer()).ToArray();