Это продолжение вопроса, который я задал ранее, который можно увидеть здесь:
Запутался в передаче аргументов Expression vs. Func
Принятый там ответчик предлагает рефакторингВыражение, ссылающееся на локальные объекты во что-то, что Linq to Entities может фактически выполнить с резервным хранилищем (в моем случае SQL Server)
Я потратил много времени, пытаясь придумать что-то, что будет работать для того, что яя делаю.Мой оригинальный
Func<Thing, bool> whereClause
ссылался на локальный объект Dictionary, который Linq to Entities или SQL не мог понять во время выполнения.Я попытался рефакторинг в несколько списков, которые подделали словарь, и Массивы после этого.Каждый раз, когда я получал ошибки во время выполнения, жалуясь на то, что контекст не распознает такие вещи, как методы в List или индексаторы массива.
В конце концов я отказался и просто предоставил дополнительный метод, который принимает аргумент Func, когдаЯ не могу придумать правильное выражение.
Я не пытаюсь найти решение своей конкретной проблемы, я просто задаюсь вопросом в целом, можно ли всегда преобразовать,скажите
Func<Thing, bool>
эквивалентному
Expression<Func<Thing, bool>>
, который может работать против Linq для сущностей.Или, если есть много примеров запросов, в которых вы просто должны сначала извлечь данные в память.