public IList <MatchingPair> GetMatchingPairs(ICollection <LostAndFoundIndexedItem> items) { var findings = items.Where(item => item.ItemType == LostAndFoundIndexedItem.Type.Finding).ToArray(); var randomizer = new Random(); Func <LostAndFoundIndexedItem, LostAndFoundIndexedItem> randomNonMatch = item => findings[randomizer.Next(0, findings.Length - 1)]; var unmatched = items.Where(match => match.ItemType == LostAndFoundIndexedItem.Type.Loss && match.MatchedRecordID == null && (DateTime.Now - match.DateOfIncident).Days > _daysWithoutMatch); return(unmatched.Select(item => _mapper.MapNonMatch(item, randomNonMatch(item))).ToList()); }