Notsupportedexception未被用户代码处理

时间:2012-10-24 09:37:14

标签: c# entity-framework .net-4.0 exception-handling linq-to-entities

我的代码:

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();

发生错误:

  

" LINQ to Entities无法识别方法'布尔IsNullOrWhiteSpace(System.String)'方法,并且此方法无法转换为商店表达式。"

注意: 当我在SQL Server Management Studio中执行以下行时:

SELECT * FROM UVW_Sample WHERE Gender IS NULL

正在显示记录。请帮助解决这个问题。

2 个答案:

答案 0 :(得分:2)

LINQ-to-Entities的功能有限,因为它将表达式转换为SQL,并且不知道如何将string.IsNullOrWhiteSpace转换为SQL。它也不知道如何将.ToString()转换为SQL。

您需要做的是在LINQ-to-Entities之外执行翻译。在您的情况下,您的谓词应该是:

x=>x==null || x.Trim()==""

答案 1 :(得分:1)

string.IsNullOrWhiteSpace无法转换为SQL,因此如果要检查列是否为null,请使用以下内容:

predicate = predicate.And(x => x.Gender == null);