Я пишу простой поисковый запрос для своего приложения Entity Framework. Мне нужно проверить, являются ли куча полей нулевыми, а если нет, вызвать для них ToLower()и сравнить с поисковым запросом. Запрос LINQ выглядит примерно так:
public IQueryable<Store> SearchStores(string q, IQueryable<Store> source)
{
q = q.ToLower();
return (
from s in source
where (
(s.Name != null && s.Name.ToLower().Contains(q)) ||
(s.Description != null && s.Description.ToLower().Contains(q)) ||
...
}
Таких строк много, поэтому у меня возникло искушение написать вспомогательный метод, чтобы немного их очистить:
public static bool SafeSearch(this string s, string q)
{
return s == null ? false : s.ToLower().Contains(q);
}
Это, конечно, не работает, так как LINQ сущности не понимают, что такое функция SafeSearch:
LINQ to Entities не распознает метод 'Boolean SafeSearch (System.String, System.String )', и этот метод не может быть преобразован в выражение хранилища.
Есть ли простой способ написать такую простую пользовательскую функцию?
Спасибо!