【发布时间】:2016-10-13 19:55:22
【问题描述】:
我还没有很好地掌握 LINQ,感觉我的代码可以优化,所以寻求帮助。
我有一个 Patient 和 Med 类,每个类都有一个 public bool IsSelected。这些被包装到 PatientMeds 和 PatientMeds 类中;
public class PatientMeds
{
public Patient Patient;
public List<Med> Meds;
}
public class PatientsMeds
{
public List<PatientMeds> PatientMedsList;
}
我想过滤这些,所以如果 Patient.IsSelected == false 然后忽略它,并且只忽略 IsSelected == false 的 Meds;
现在,这段代码可以工作了:
List<PatientMeds> patientMedsList = PatientsMeds.PatientMedsList
.Where(x => x.Patient.IsSelected)
.ToList();
foreach (PatientMeds patientMeds in patientMedsList)
{
var medsToRemove = patientMeds.Meds.Where(m => m.IsSelected == false).ToList();
foreach (Med med in medsToRemove)
{
patientMeds.Meds.Remove(med);
}
}
但它看起来很“笨拙”。我怎样才能让它变得更好?
【问题讨论】:
-
LINQ 用于查询,而您当前的代码实际上正在修改现有
PatientMeds对象的Meds列表。那么它应该是怎样的呢? -
您可以使用 LINQ 的 Any 方法,满足这两个要求