private static List<Patient> GetPatientData()
{
return new List<Patient>()
{
new Patient(1,new List<Case>() { new Case(10, CaseType.ambulant)}),
new Patient(2,new List<Case>() { new Case(20, CaseType.ambulant), new Case(21, CaseType.ambulant), new Case(22, CaseType.stationaer),new Case(23, CaseType.teilstat) }),
new Patient(3,new List<Case>() { new Case(30, CaseType.ambulant), new Case(31, CaseType.ambulant), new Case(32, CaseType.stationaer), new Case(33, CaseType.stationaer), new Case(34, CaseType.teilstat) }),
new Patient(4,new List<Case>() { new Case(40, CaseType.ambulant), new Case(41, CaseType.stationaer), new Case(43, CaseType.teilstat), new Case(44, CaseType.ambulant), new Case(45, CaseType.stationaer), new Case(46, CaseType.teilstat) }),
new Patient(5,new List<Case>() {new Case(53, CaseType.teilstat),new Case(54, CaseType.teilstat) })
};
}
List<Patient> patientList = GetPatientData();
var result = patientList.SelectMany(item => item.CaseList.Select(itemCase=> itemCase.CaseType).Distinct());
foreach (CaseType item in result)
{
Console.WriteLine("CaseTypes = {0}",item);
}
Приведенный выше код дает список пациентов, из которого я хочу отдельный список случаев. Итак, есть ли оптимизированный способ сделать это из того, что я сделал?Есть ли эффективный способ оптимизации после Linq
Dictionary<int, int> result = patientList.ToDictionary(item => item.PatientID , item=> item.CaseList.Select(x=>x.CaseType).Distinct().Count());
foreach (KeyValuePair<int,int> item in result)
{
Console.WriteLine("{0} {1}", item.Key,item.Value);
}
Во втором случае я пытаюсь получить patientID & Distinct CaseType графа для этого конкретного пациента. я могу оптимизировать это.
Нет , это выглядит хорошо для меня. У вас есть фактическая производительность * вопрос * с ним? –
Почему, по вашему мнению, этот код нуждается в оптимизации? Он работает медленно? Используете ли вы инструмент профилирования для его изменения? – HimBromBeere
Является ли первое число уникальным идентификационным номером? Вы можете группировать по ID, а затем перенести FirstOrDefault из каждой группы. Patients.GroupBy (x => x.ID). Выберите (y => y.FirstOrDefault) .ToList(); – jdweng