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

时间:2012-03-20 04:36:17

标签: c# linq entity-framework ado.net visual-studio-lightswitch

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”的lettertype。

上述代码适用于该特定记录但不能与其他患有相同医生的患者一起工作,其中患者1已经与DoctorLetter1一起发送。

2 个答案:

答案 0 :(得分:2)

在这种情况下

(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”,则条件为真且结果=假

答案 1 :(得分:0)

尝试这样的事情

PatientList.Count(c=>c.Letters.Any(i => i.LetterType == "DoctorLetter1")) > 1

希望患者和信件之间存在关系。