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>検索対象のフィールドは文字列です。なぜこれが機能しないのですか?

4

1 に答える 1

0

リストの 1 つに空の文字列の値がありました。どうやらEFはそれをSQLに変換する方法を知らないのですか? わお。

于 2012-06-14T02:48:39.270 に答える