public static async Task <List <Bundle> > FindByAreaCodeAsync(this IIotaRepository repository, IotaAreaCode areaCode) { var result = await repository.FindTransactionsByTagsAsync(new List <Tag> { new Tag(areaCode.Value) }); if (!result.Hashes.Any()) { return(new List <Bundle>()); } var transactionTrytes = await repository.GetTrytesAsync(result.Hashes); var transactions = transactionTrytes.Select(t => Transaction.FromTrytes(t)).ToList(); var bundles = new List <Bundle>(); foreach (var transaction in transactions) { if (bundles.Any(b => b.Hash.Value == transaction.BundleHash.Value)) { bundles.First(b => b.Hash.Value == transaction.BundleHash.Value).Transactions.Add(transaction); } else { var bundle = new Bundle(); bundle.Transactions.Add(transaction); bundles.Add(bundle); } } bundles.ForEach(b => b.Transactions = b.Transactions.OrderBy(t => t.CurrentIndex).ToList()); return(bundles); }