public async Task<List<TransactionTableEntity>> GetTransactionsForInvoicing(int mvanumber, int dateVal, bool includeId = true) { List<TransactionTableEntity> list = new List<TransactionTableEntity>(); var customers = new CustomerRepository().GetCustomersByMva(mvanumber).Where(x=>x.ActiveAccount); List<Task<IEnumerable<TransactionTableEntity>>> tasks = customers.Select(customer => GetTransactionsForCustomer(customer.InternalID.Value, dateVal, true)).ToList(); if (tasks.Any()) await Task.WhenAll(tasks); foreach (var task in tasks) { list.AddRange(task.Result.Where(r => (!r.NotInvoiceable.HasValue || !r.NotInvoiceable.Value) && (!r.OrderItemID.HasValue || !(r.OrderItemID.Value > 0)) )); } //var paralell = Parallel.ForEach(customers, async item => //{ // var result = await GetTransactionsForCustomer(item.InternalID.Value, dateVal, true); // list.AddRange(result.Where(r => !r.NotInvoiceable.HasValue || !r.NotInvoiceable.Value)); //}); //do //{ //} while (!paralell.IsCompleted); return list; }