internal IEnumerable<IGrouping<int, Transaction>> ValidateAgainstDuplicates()
{
ThrowIfDisposed();
if (this.duplicates != null)
{
return this.duplicates;
// Reset by Merging Transations, Load Transactions, or by reloading the statement model.
}
List<IGrouping<int, Transaction>> query =
Transactions.GroupBy(t => t.GetEqualityHashCode(), t => t)
.Where(group => group.Count() > 1)
.AsParallel()
.ToList();
this.logger.LogWarning(l => l.Format("{0} Duplicates detected.", query.Sum(group => group.Count())));
query.ForEach(
duplicate =>
{
foreach (var txn in duplicate)
{
txn.IsSuspectedDuplicate = true;
}
});
this.duplicates = query;
return this.duplicates;
}