Como permanecer seco enquanto usa o LINQ to Entities e métodos auxiliares?

Digamos que eu tenha uma maneira específica de decidir se algumas strings "coincidem", assim:

public bool stringsMatch(string searchFor, string searchIn)
{
  if (string.IsNullOrEmpty(searchFor))
  {
    return true;
  }

  return searchIn != null &&
    (searchIn.Trim().ToLower().StartsWith(searchFor.Trim().ToLower()) ||
     searchIn.Contains(" " + searchFor));
}

Gostaria de extrair correspondências de um banco de dados usando o Linq To Entities e esse auxiliar. No entanto, quando tento isso:

IQueryable<Blah> blahs = query.Where(b => stringsMatch(searchText, b.Name);

Eu recebo "LINQ to Entities não reconhece o método ..."

Se eu reescrever o código como:

IQueryable<Blah> blahs = query.Where(b =>
      string.IsNullOrEmpty(searchText) ||
      (b.Name != null &&
        (b.Name.Trim().ToLower().StartsWith(searchText.Trim().ToLower()) ||
         b.Name.Contains(" " + searchText)));

Qual é logicamente equivalente, então as coisas funcionam bem. O problema é que o código não é tão legível e eu preciso reescrevê-lo para cada entidade diferente que eu quero corresponde

Tanto quanto eu posso dizer a partir de perguntas comoest, o que eu quero fazer é impossível no momento, mas espero que esteja perdendo alguma coisa, estou?

questionAnswers(2)

yourAnswerToTheQuestion