Consulta LINQ 2 SQL não funciona com uma chamada de função

Tenho certeza de que essa pergunta já foi feita várias vezes e peço desculpas por perguntar mais uma vez, mas fiz algumas pesquisas e, infelizmente, não encontrei meu prazer na internet ...

Eu tenho um IQueryable como este:

triggers = triggers.Where(t => GetIdFromName(t.Name) == filter.Id.ToString());

A função GetIdFromName obtém uma parte do nome para recuperar o ID:

public string GetIdProfiloFromName(string name)
        {
            return name.Substring(name.IndexOf(NameFirstSeparator)+1,name.IndexOf(NameSecondSeparator)-name.IndexOf(NameFirstSeparator)-1);
        }

Sei que não é legal, mas é o melhor que consegui fazer até agora. Minha pergunta é que o uso do Linq no sql não é permitido usando essas duas instruções. O aplicativo gera um erro, enquanto isso está ok:

triggers = triggers.Where(t => t.Name.Substring(t.Name.IndexOf(NameFirstSeparator) + 1, t.Name.IndexOf(NameSecondSeparator) - t.Name.IndexOf(NameFirstSeparator) - 1) == filter.Id.ToString());

Eu suspeito que a função GetIdFromName deva dar algo diferente de uma string, mas eu realmente me pergunto o que e como ...

Obrigado pela sua iluminação,

Yoann

[EDIT] Atualização para o que eu entendi até agora:

Eu não posso fazer o que eu queria, porque para fazer isso eu precisaria fazer algo desse tipo:

static Expression<Func<Trigger,string,  bool>> IsId = (a,b) => a.name.Substring(a.name.IndexOf(NameFirstSeparator) + 1, a.name.IndexOf(NameSecondSeparator) - a.name.IndexOf(NameFirstSeparator) - 1)==b;

Mas isso não entraria em

triggers = triggers.Where(func<Trigger,bool>);

E eu consegui fazer isso, mas teria que obter todos os resultados do meu banco de dados para realizar meu teste na memória.

Muito obrigado a todos, você fez isso ficar muito claro para mim !!

questionAnswers(1)

yourAnswerToTheQuestion