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);
}
上面的代码给出了Patient的列表,我想要一个不同的案例列表。那么有没有什么优化的方法可以做到这一点?有没有任何有效的方法来优化以下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 &鲜明CaseType计数为特定的患者。我可以优化这一个吗?
否,这对我来说看起来很好。你有一个实际的表现*问题*吗? –
你为什么认为这段代码需要优化?它运行缓慢吗?您是否使用过分析工具来对此进行变更? – HimBromBeere
第一个号码是唯一的ID号码吗?您可以按ID分组,然后从每个组中选择FirstOrDefault。 Patients.GroupBy(x => x.ID).Select(y => y.FirstOrDefault).ToList(); – jdweng