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!

questionAnswers(2)

yourAnswerToTheQuestion