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 发送。

C#/LINQ 查询中的“和”条件

在这种情况下

(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

希望病人和信之间有关系。