¿Hay una manera de parametrizar el método en una consulta linq?

En mi aplicación con Linq to SQL, el usuario puede buscar texto. Se puede usar un asterisco (*) al principio y / o al final de la expresión de búsqueda. El código ahora es este:

var search = SearchTextBox.Text.Trim();
bool filterStartsWith = false, filterEndsWith = false;
if (!string.IsNullOrEmpty(search))
{
    filterStartsWith = search.EndsWith("*");
    filterEndsWith = search.StartsWith("*");
    if (filterStartsWith) search = search.Substring(0, search.Length - 1);
    if (filterEndsWith) search = search.Substring(1);

    if (filterStartsWith)
    {
        if (filterEndsWith)
        {
            query = query.Where(item => item.Omschrijving.Contains(search));
        }
        else
        {
            query = query.Where(item => item.Omschrijving.StartsWith(search));
        }
    }
    else
    {
        if (filterEndsWith)
        {
            query = query.Where(item => item.Omschrijving.EndsWith(search));
        }
        else
        {
            query = query.Where(item => item.Omschrijving == search);
        }
    }
}

Sin embargo, quiero generalizar esto, porque este tipo de búsqueda ocurre en más lugares. Además, en algunas tablas, esto debería ocurrir en más de una columna. ¿Algunas ideas?

Yo uso Visual Studio 2010 con .NET Framework 4.0.

Respuestas a la pregunta(3)

Su respuesta a la pregunta