Вы перегрузили оператор равенства для ReportReceipt?Разве метод SequenceEqual не проверяет наличие в памяти местоположения ReportReceipt, а не содержимого объекта?Переопределение Equals и GetHashCode должно решить вашу проблему.
Добавьте что-то вроде следующего в ReportReceipt:
public override bool Equals(object obj)
{
if (obj == null || obj.GetType() != this.GetType)
return false;
ReportReceipt other = (ReportReceipt)obj;
return this.FileName.Equals(other.FileName)
&& this.Hash.Equals(other.Hash);
}