我有这个linq查询并使用EF edmx。
forms = (from f in db.Forms
join ffl in db.FormFirstLetters on f.FormID equals ffl.FormID
where f.IsActive
where criteria.CategoryNames == null || criteria.CategoryNames.Contains(f.Category)
where startsWith == null || startsWith.Contains(ffl.FirstLetter)
orderby f.FormName
select new FormSummary
{
FormID = f.FormID,
Category = f.Category,
FormName = f.FormName,
AcceptSubmissions = f.AcceptSubmissions,
TodaysEntries = f.FormSubmissions.Count(tbl => tbl.SubmissionDate >= todaysDate),
TotalEntries = f.FormSubmissions.Count(),
LatestEntry = f.FormSubmissions.OrderByDescending(x => x.SubmissionDate).Select(x => x.SubmissionDate).FirstOrDefault()
}).ToArray();
我收到此错误
无法创建类型的常量值 'System.Collections.Generic.IEnumerable`1'。只有原始类型 (在这种情况下支持'',如Int32,String和Guid'。
我认为使用Contains
是可以接受的,之前在这些类型的linq查询中已经多次使用它但由于某种原因它无效。 criteria.CategoryNames
和startsWith
都是IEnumerable<string>
,搜索的字段是字符串。为什么这不起作用?
答案 0 :(得分:0)
其中一个列为空字符串的值。显然EF不知道如何将其转换为sql?哇。