У меня есть пользователи, которые ищут записи типа 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.
Как я могу повторно использовать мое условие в запросах?