LINQ 查询获取运行时错误

本文关键字:运行时错误 获取 查询 LINQ | 更新日期: 2023-09-27 18:37:11

我有这个 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、字符串和 Guid")在此上下文中受支持。

我认为使用 Contains 是可以接受的,并且之前在这些类型的 linq 查询中多次使用它,但由于某种原因它不起作用。criteria.CategoryNamesstartsWith都是IEnumerable<string>的,要搜索的字段是字符串。为什么这不起作用?

LINQ 查询获取运行时错误

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