Linq 无法从';字符串';至';System.Collections.Generic.IEqualityComparer<;LightSwitch应用程序。LettersEntItem>';
表PatientsMaster与LettersEntItem有关系。在LettersEntItem表中,我有一个名为lettertype的字段。我有三种不同类型的信。我怎么能只允许一位患者的信件类型Linq 无法从';字符串';至';System.Collections.Generic.IEqualityComparer<;LightSwitch应用程序。LettersEntItem>';,linq,entity-framework,c#-4.0,visual-studio-lightswitch,Linq,Entity Framework,C# 4.0,Visual Studio Lightswitch,表PatientsMaster与LettersEntItem有关系。在LettersEntItem表中,我有一个名为lettertype的字段。我有三种不同类型的信。我怎么能只允许一位患者的信件类型 partial void DateSent_Validate(EntityValidationResultsBuilder results) { if (this.PatientsMasterItem.LettersSentItem.Count() > 3 ||
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");
}
}
您需要检查是否有多个相同类型的字母,一种方法是在
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)
不起作用<代码>字母。Distinct(x)选择所有不同的字母(让x
决定哪些字母相等),但如果使用Distinct()
删除任何字母,您就不再有需要计数的信息。您有三种类型的字母,患者最多可以发送三封字母,但它们必须是同一类型的?这就是你想要检查的吗?它们都必须是不同类型的。抱歉说不清楚。