public async Task WhenIParseTheDetailsOfTheFiles(string filePath) { string[] files = { filePath }; var attr = File.GetAttributes(filePath); if (attr.HasFlag(FileAttributes.Directory)) { files = Directory.GetFiles(filePath, "*.csv"); } var readTasks = files.Select(s => { var sourceKind = CsvAccountOperationManager.DetectFileSourceKindFromFileName(s); var fmd = FileStructureMetadataFactory.CreateDefault(sourceKind); using (var fs = File.OpenRead(s)) { return(_context.CsvAccountOperationManager.ReadAsync(fs, fmd) .ContinueWith(t => t.Result.Select(op => _context.Transformer.Apply(op, fmd.GetCultureInfo())))); } }); var operationsBatches = await Task.WhenAll(readTasks); _context.UnifiedOperations = operationsBatches.SelectMany(operations => operations) .SortByOperationIdDesc() .ToList(); }