使用IsNullOrWhitespace检查IQueryable中的值

时间:2012-12-11 03:04:32

标签: linq linq-to-entities iqueryable

我尝试使用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.

这是什么解决方案?

1 个答案:

答案 0 :(得分:3)

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