Условие «И» в C # / LINQ Query - PullRequest
0 голосов
/ 20 марта 2012
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.

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

в этом состоянии

(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» отправлено, тогда условие истинно и result = false

0 голосов
/ 20 марта 2012

Попробуйте что-то вроде этого

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

Надеюсь, что есть связь между Пациентом и Письмом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...