Общий предикат запроса LINQ?

Не уверен, возможно ли это или яя правильно выражаю то, что яЯ ищу, но у меня есть следующий фрагмент кода в моей библиотеке несколько раз и хотел бы попрактиковаться в СУХОЙ. У меня есть набор таблиц SQL Server, которые яm запросов на основе простого пользовательского поля поиска аля Google. Я'Я использую LINQ для составления окончательного запроса на основе того, чтоs в строке поиска. Я'Я ищу способ использовать дженерики и передать в лямбда-функции для создания из этого многоразовой подпрограммы:

string[] arrayOfQueryTerms = getsTheArray();

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

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

Я надеялся создать универсальный метод с подписью, который выглядит примерно так:

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

Я использую одну и ту же стратегию поиска во всех моих таблицах, поэтому единственное, что действительно отличается от использования к использованию, - это MyTable & MyTableEntity искал и FieldName искал. Имеет ли это смысл? Есть ли способ с помощью LINQ динамически передавать имя поля для запроса в предложении where? Или я могу передать это как предикат лямбда?

e => e.FieldName.Contains(queryTerm)

Я понимаю, что есть полтора миллиона способов сделать это в SQL, возможно, проще, но яЯ бы хотел сохранить все в семье LINQ для этого. Кроме того, я чувствую, что генерики должны быть полезны для такой проблемы, как эта. Есть идеи?

Ответы на вопрос(4)

Ваш ответ на вопрос