1

私のコード:

i f(!string.IsNullOrWhiteSpace(gender))
    if (gender == "NULL")
        predicate = predicate.And(x => string.IsNullOrWhiteSpace(gender));
    else
        predicate = predicate.And(x => x.Gender == gender);

性別がNULLの場合、およびフローラインを実行している場合:

var filteredUsers = _personExtendedRepository.GetMany(predicate).ToList();

エラーが発生します:

「LINQtoEntitiesは、メソッド'Boolean IsNullOrWhiteSpace(System.String)'メソッドを認識しません。また、このメソッドをストア式に変換できません。」

:SQL Server ManagementStudioで次の行を実行している場合:

SELECT * FROM UVW_Sample WHERE Gender IS NULL

レコードが表示されています。この問題を解決する方法を教えてください。

4

2 に答える 2

2

LINQ-to-Entitiesは、式をSQLに変換し、string.IsNullOrWhiteSpaceをSQLに変換する方法を知らないため、実行できる機能に制限があります。また、.ToString()をSQLに変換する方法もわかりません。

必要なのは、LINQ-to-Entitiesの外部で変換を実行することです。あなたの場合、あなたの述語は次のようになります:

x=>x==null || x.Trim()==""
于 2012-10-24T09:44:12.253 に答える
1

string.IsNullOrWhiteSpaceSQLに変換できないため、列がnullかどうかを確認する場合は、次のように使用します。

predicate = predicate.And(x => x.Gender == null);
于 2012-10-24T09:42:59.627 に答える