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