C#/LINQ 查询中的“和”条件
本文关键字:条件 LINQ 查询 | 更新日期: 2023-09-27 18:28:23
partial void PrintDocLetter1_CanExecute(ref bool result)
{
if (this.PatientsMasterItem.DoctorsMasterItem != null)
{
var Doctor = PatientsMasterItem.DoctorsMasterItem;
var PatientList = Doctor.PatientsMasterItem;
var Letters = PatientsMasterItem.LettersSentItem;
if ((PatientList.Count() > 1) && (Letters.Any(i => i.LetterType == "DoctorLetter1")))
{
result = false;
}
else
{
result = true;
}
}
}
我认为我的第二个条件有问题。我试图找到两件事。1(有1名以上患者的医生。2(在这些患者中,是否发送了名为"DoctorLetter1"的信件类型。
上面的代码适用于该特定记录,但不适用于其他患者与相同的医生,其中患者 1 已经通过 DoctorLetter1 发送。
在这种情况下
(Letters.Any(i => i.LetterType == "DoctorLetter1")
已更新(根据您的 ER 图(
你没有检查所有病人的信。
尝试..if(Doctor.PatientsMasterItem.Count > 1
&& Doctor.PatientsMasterItem.Any(patient =>
patient.LettersSentItem.Any(letter => letter.LetterType == "DoctorLetter1")))
{
result = false;
}
*逻辑
医生有很多病人,每个病人都有很多字母。
如果任何患者(其中只有一个(至少发送了一个"DoctorLetter1",则条件为真,结果=假
尝试这样的事情
PatientList.Count(c=>c.Letters.Any(i => i.LetterType == "DoctorLetter1")) > 1
希望病人和信之间有关系。