Existe uma maneira simples de escrever uma função personalizada no LINQ to Entities?
Eu estou escrevendo uma consulta de pesquisa simples para o meu aplicativo Entity Framework. Eu preciso verificar se um monte de campos são nulos, e se não, chame ToLower () neles e compare com a consulta de pesquisa. A consulta LINQ é algo como isto:
<code>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)) || ... } </code>
Há muitas linhas como essa, então fiquei tentado a escrever um método auxiliar para limpá-lo um pouco:
<code>public static bool SafeSearch(this string s, string q) { return s == null ? false : s.ToLower().Contains(q); } </code>
Isso obviamente não funciona, já que o LINQ para entidades não entende o que é a função SafeSearch:
LINQ to Entities não reconhece o método 'Boolean SafeSearch (System.String, System.String)' método e esse método não pode ser convertido em uma expressão de armazenamento.
Existe uma maneira fácil de escrever uma função personalizada simples como essa?
Obrigado!