Czy istnieje prosty sposób na napisanie niestandardowej funkcji w LINQ do jednostek?

Piszę proste zapytanie do mojej aplikacji Entity Framework. Muszę sprawdzić, czy kilka pól jest pustych, a jeśli nie, zadzwoń do ToLower () i porównaj z zapytaniem wyszukiwania. Zapytanie LINQ wygląda mniej więcej tak:

<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>

Jest wiele takich linii, więc kusiło mnie, żeby napisać metodę pomocniczą, żeby trochę posprzątać:

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

To oczywiście nie działa, ponieważ LINQ dla podmiotów nie rozumie, czym jest funkcja SafeSearch:

LINQ to Entities nie rozpoznaje metody „Boolean SafeSearch (System.String, System.String)”, a tej metody nie można przetłumaczyć na wyrażenie magazynu.

Czy istnieje prosty sposób na napisanie prostej funkcji niestandardowej takiej jak ta?

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion