Похоже, что моя функция LinqKit Predicatebuilder прерывается, когда значение FirstName или LastName = null.
public partial class Student
{
public int id { get; set; } // PK
public string FirstName { get; set; }
public string LastName { get; set; }
}
private Expression<Func<Student, bool>> BuildDynamicWhereClause(string searchValue)
{
// simple method to dynamically plugin a where clause
var predicate = PredicateBuilder.New<Student>(true); // true -where(true) return all
if (String.IsNullOrWhiteSpace(searchValue) == false)
{
var searchTerms = searchValue.Split(' ').ToList().ConvertAll(x => x.ToLower());
predicate = predicate.Or(s => searchTerms.Any(srch => s.FirstName.Contains(srch)));
predicate = predicate.Or(s => searchTerms.Any(srch => s.LastName.Contains(srch)));
}
return predicate;
}
Как переписать predicate.Or(s => searchTerms.Any(srch => s.FirstName.Contains(srch)));
, так как для Contains требуется значение для поиска и выдается исключение?
Я пробовал:
predicate = predicate.Or(s => searchTerms.Any(srch => s.FirstName == null ? false : s.FirstName.Contains(srch)));
, а также
predicate = predicate.Or(s => searchTerms.Any(srch => s.FirstName == null ? true : s.FirstName.Contains(srch)));
, который компилируется, но теперь имя FirstName не ищется.