La consulta SQL de LINQ 2 no funciona con una llamada de función

Estoy bastante seguro de que esta pregunta ya se ha hecho varias veces y pido disculpas por haberla preguntado una vez más, pero investigué un poco y desafortunadamente no encontré mi placer en Internet ...

Tengo un IQueryable como este:

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

La función GetIdFromName obtiene una parte del nombre para recuperar el Id:

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

Sé que no es agradable, pero es lo mejor que pude hacer hasta ahora. Mi pregunta es que usar Linq para sql no está permitido usando estas dos declaraciones. La aplicación arroja un error, mientras que esto está bien:

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

Sospecho que la función GetIdFromName debería dar algo diferente a una cadena, pero realmente me pregunto qué y cómo ...

Gracias por tu iluminación,

Yoann

[EDITAR] Actualización a lo que entendí hasta ahora:

No puedo hacer lo que quería, porque para hacerlo tendría que hacer algo de este 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;

Pero esto no entraría en

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

Y pude lograrlo, pero tendría que obtener todos los resultados de mi base de datos para realizar mi prueba en la memoria.

¡Muchas gracias a todos, ustedes me dejaron esto muy claro!

Respuestas a la pregunta(1)

Su respuesta a la pregunta