невозможно преобразовать из «строки» в «System.Collections.Generic.IEqualityComparer <LightSwitchApplication.LettersSentItem>» - PullRequest
0 голосов
/ 13 марта 2012

Таблица PatientsMaster связана с LettersSentitem. В таблице lettersentitem у меня есть поле с именем lettertype. У меня есть три разных типа букв. Как я могу разрешить только тип письма от одного пациента.

  partial void DateSent_Validate(EntityValidationResultsBuilder results)
    { 
        if (this.PatientsMasterItem.LettersSentItem.Count() > 3 || this.PatientsMasterItem.LettersSentItem.Distinct(LetterType))
        {
        results.AddPropertyError("Can't Print More than 3 letters per patient");
        }
    }

1 Ответ

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

Вам необходимо проверить, существует ли более одной буквы одного типа, и один из способов сделать это - сгруппировать по LetterType и проверить .Count() для каждого из результатов:

partial void DateSent_Validate(EntityValidationResultsBuilder results)
{ 
    if (this.PatientsMasterItem.LettersSentItem.GroupBy(i => i.LetterType).Any(l => l.Count() > 1))
    {
        results.AddPropertyError("Can't print more than one letter of the same type per patient");
    }
}

.Distinct(x) не собирается работать. letters.Distinct(x) выбирает все отдельные буквы (позволяя x решить, какие из них равны), но если вы отбросите какие-либо буквы с помощью Distinct(), у вас больше не будет информации, которую вам нужно посчитать.

...