¿Predicado genérico de consulta LINQ?

No estoy seguro si esto es posible o si estoy expresando correctamente lo que estoy buscando, pero tengo el siguiente código en mi biblioteca repetidamente y me gustaría practicar algo SECO. He establecido un conjunto de tablas de SQL Server que estoy consultando en base a un campo de búsqueda simple proporcionado por el usuario en Google. Estoy usando LINQ para componer la consulta final en función de lo que está en la cadena de búsqueda. Estoy buscando una forma de usar los genéricos y pasar las funciones lambda para crear una rutina reutilizable a partir de esto:

string[] arrayOfQueryTerms = getsTheArray();

var somequery = from q in dataContext.MyTable
                select q;

if (arrayOfQueryTerms.Length == 1)
{
    somequery = somequery.Where<MyTableEntity>(
        e => e.FieldName.StartsWith(arrayOfQueryTerms[0]));
}
else
{
    foreach(string queryTerm in arrayOfQueryTerms)
    {
        if (!String.IsNullOrEmpty(queryTerm))
        {
            somequery = somequery 
                        .Where<MyTableEntity>(
                            e => e.FieldName.Contains(queryTerm));
        }
    }
}

Esperaba crear un método genérico con firma que se pareciera a algo como:

private IQueryable<T> getQuery(
    T MyTableEntity, string[] arrayOfQueryTerms, Func<T, bool> predicate)

Estoy usando la misma estrategia de búsqueda en todas mis tablas, por lo que lo único que realmente difiere de uso a uso es la búsqueda de MyTable y MyTableEntity y la búsqueda de FieldName. ¿Esto tiene sentido? ¿Hay alguna forma con LINQ de pasar dinámicamente el nombre del campo para consultar en la cláusula where? ¿O puedo pasar esto como un predicado lambda?

e => e.FieldName.Contains(queryTerm)

Me doy cuenta de que hay un millón y medio de maneras de hacer esto en SQL, probablemente más fácil, pero me encantaría mantener todo en la familia LINQ para esta. Además, creo que los genéricos deberían ser útiles para un problema como este. ¿Algunas ideas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta