3

IQueryable式を使用して次のことを実行しようとしています。

(from Person p in s
   select new
   {
           label = p.FirstName + " "
       + (string.IsNullOrWhiteSpace(p.MiddleName) ? p.MiddleName + " " : "")
                   + p.LastName,
       value = p.Id
       }).ToList();

次のエラーが発生します:

LINQ to Entities does not recognize the method 'Boolean 
IsNullOrWhiteSpace(System.String)' method, and this method cannot be 
translated into a store expression.

これに対する解決策は何ですか?

4

1 に答える 1

4

String.IsNullOrWhitespaceは、文字列オブジェクトの静的関数であり、Entity Frameworkクエリでは使用できませんが、p.FirstName.StartsWith("S")はエンティティプロパティのメソッドであり、使用できます。

あなたの質問に答えるために、あなたはあなた自身のインラインを転がさなければならないでしょう。これを試して:

(from Person p in s
   select new
   {
       label = p.FirstName + " "
       + ((p.MiddleName != null && p.MiddleName != string.Empty) ? p.MiddleName + " " : "")
                   + p.LastName,
       value = p.Id
   }).ToList();
于 2012-12-11T03:25:54.577 に答える