¿Hay una forma sencilla de escribir una función personalizada en LINQ para Entidades?

Estoy escribiendo una consulta de búsqueda simple para mi aplicación Entity Framework. Necesito verificar si un grupo de campos son nulos, y si no, llame a ToLower () en ellos y compare con la consulta de búsqueda. La consulta LINQ se ve algo como esto:

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)) ||
            ...
}

Hay muchas líneas como esta, así que tuve la tentación de escribir un método auxiliar para limpiarlo un poco:

public static bool SafeSearch(this string s, string q)
{
    return s == null ? false : s.ToLower().Contains(q);
}

Sin embargo, esto, por supuesto, no funciona, ya que LINQ para entidades no entiende qué es la función SafeSearch:

LINQ to Entities no reconoce el método 'Boolean SafeSearch (System.String, System.String)', y este método no se puede traducir a una expresión de tienda.

¿Hay una manera fácil de escribir una función personalizada simple como esta?

¡Gracias!