У меня есть пользователи, которые ищут записи типа Record. Они вводят термин поиска в текстовое поле, а затем я ищу записи, сопоставляя несколько полей с поисковым термином.
Мой запрос выглядит так:
var results = from record in DataContext.Records
              where
                   record.Field1.ToLower().Contains(term) ||
                   record.Field2.ToLower().Contains(term) ||
                   record.Field3.ToLower().Contains(term)
              select record;
У меня есть ряд запросов, которые используют один и тот же фильтр, и поэтому я хотел бы извлечь фильтрацию, чтобы ее можно было повторно использовать. Что-то вроде:
var filter = new Func<Record, string, bool>(
                (record, term) =>
                    record.Field1.ToLower().Contains(term) ||
                    record.Field2.ToLower().Contains(term) ||
                    record.Field3.ToLower().Contains(term)
             );
var results = from record in DataContext.Records
              where filter(record, term)
              select record;
Однако это не работает, потому что:
Метод 'System.Object DynamicInvoke (System.Object [])' не поддерживает перевод на SQL.
Как я могу повторно использовать мое условие в запросах?
