LINQ to Entities(SQL)で IsNullOrWhiteSpace が使えない場合の対処


LINQ to Entities / LINQ to SQL の Where 条件に IsNullOrWhiteSpace を使用すると下記の例外が発生します。
System.NotSupportedException: 'メソッド 'Boolean IsNullOrWhiteSpace(System.String)' は LINQ to Entities では認識されないため、ストア式に変換できません。'

using(var db = new DbContext())
{
  var userList = db.User.where(user => !(string.IsNullOrWhiteSpace(user.name)).ToList();//例外発生
  ///後略
}

認識されないものは仕方がないので、おとなしく以下のように書き換えました。

using(var db = new DbContext())
{
  var userList = db.User.where(user => !( user.name == null || user.name.Trim() == string.Empty)).ToList();//例外発生しない
  ///後略
}

Programming Blog