LINQ查询获取运行时错误

时间:2012-06-14 01:49:29

标签: c# linq entity-framework .net-4.0

我有这个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.CategoryNamesstartsWith都是IEnumerable<string>,搜索的字段是字符串。为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

其中一个列为空字符串的值。显然EF不知道如何将其转换为sql?哇。