public IEnumerable <IGrouping <DateTime, Source> > GetNewSetsOfFiles(IList <string> listOfFiles) { var bookingFileName = Globals.BookingFileName; var passengerFileName = Globals.PassengerFileName; var chargesFileName = Globals.ChargesFileName; var fileList = new List <IGrouping <DateTime, Source> >(3); var filesGroupedByDate = _csvFileManager .PopulateModel(listOfFiles) .GroupBy(f => f.Date).ToList().OrderBy(x => x.Key); FileSetsWithMissingFiles.Clear(); FileSetsNonChronological.Clear(); foreach (var fileSet in filesGroupedByDate) { //If all three needed csv files is present if (fileSet.Any(b => b.Identification == bookingFileName && fileSet.Any(p => p.Identification == passengerFileName) && fileSet.Any(c => c.Identification == chargesFileName))) { fileList.Add(fileSet); } else { foreach (var source in fileSet) { FileSetsWithMissingFiles.Add( new Source { Date = source.Date, Identification = source.Identification, Path = source.Path }); } } } return(fileList.OrderBy(f => f.Key).ToList()); }