我的代码:
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
正在显示记录。请帮助解决这个问题。
答案 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);