BudgetAnalyser.Engine.Statement.StatementModel.ValidateAgainstDuplicates C# (CSharp) Method

ValidateAgainstDuplicates() private method

private ValidateAgainstDuplicates ( ) : Transaction>>.IEnumerable
return Transaction>>.IEnumerable
        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;
        }

Usage Example

コード例 #1
0
 public void ValidateShouldPassWhenNoDuplicates()
 {
     StatementModel statement = new StatementModel(new FakeLogger()).LoadTransactions(new List<Transaction> { Transaction1, Transaction2, Transaction3 });
     Assert.IsFalse(statement.ValidateAgainstDuplicates().Any());
 }
All Usage Examples Of BudgetAnalyser.Engine.Statement.StatementModel::ValidateAgainstDuplicates