Я не уверен, что в этом случае существует такая вещь, как «официальный источник», но я руководил разработкой LINQ для Visual Basic, так что, возможно, это что-то значит.В любом случае вот мое мнение:
Проблема, которую вы, похоже, представляете, заключается в том, что вы хотите иметь возможность передавать предикатное выражение бэкэнду «независимо от реализации [бэкэнда» ».Тем не менее, мне кажется, что два перечисленных вами варианта на самом деле являются просто вариантами друг друга, так как в обоих случаях сервер должен иметь возможность понимать спецификацию предиката, которая передается. Первый вариант оказывается более общим и гибким.чем второй вариант (но это также гораздо больший перевод).Второй вариант более ограничен, чем второй, но имеет более простую структуру (хотя, поскольку вы разрешаете указывать все больше и больше сложных запросов во втором варианте, структура неизбежно будет все больше напоминать структуру из первого варианта).).
Суть в том, что нет хорошего ответа на ваш вопрос.Не существует универсальной структуры выражений, в которой вы можете быть уверены, что все провайдеры будут поддерживать, поэтому, если вы действительно хотите иметь метод поиска, который работает над любым провайдером, независимо от реализации, вы быдолжны быть готовы вернуться к локальному запуску предиката, если поставщик не поддерживает, скажем, деревья выражений.В зависимости от сценария, который может или не может работать для вас.
С другой стороны, если (как более вероятно) список возможных поставщиков, которых вы получите, конечен, вы, вероятно, будете лучшерешите, что для вас наиболее важно (простота использования / выразительность или простота реализации), и выберите, какие ограничения вы хотите наложить на провайдеров.Деревья выражений, безусловно, были бы во многих отношениях хорошими для программиста приложений-потребителей, поэтому, если вы думаете, что можете обойтись без этого ограничения, сделайте это.В противном случае, какая-то более простая пользовательская структура, вероятно, вызовет у вас меньше боли и страданий.(Я не рекомендую пытаться переводить деревья выражений самостоятельно, если у вас нет много дополнительного времени и терпения.)