Объединение выражения OrderBy с выражением Where

Я нашел следующий вопрос, который может сочетать несколько выражений Expression>:

Как объединить два лямбда-выражения C #без вызова?

Мне интересно, как вы, используя подобную технику, объединяете.OrderBy Expression>с.Where Expression>в одно выражение типа или наследуете от типа System.Linq.Expressions.Expression.

Я делаю очень урезанный класс стиля QueryProvider -для получения T => T ==...Func через общедоступные методы .Whereи .OrderBy. Это сделано для того, чтобы выражение, которое строит этот класс, передавалось в QueryTranslator для создания подходящего SQL.

QueryTranslator этого стиля при вызове из QueryProvider обычно принимает один System.Linq.Expressions.Expressionв качестве аргумента, который затем преобразуется в SQL.

Я могу выполнить и понять поставленный выше вопрос о слиянии двух .WhereFuncs. Следующий пост в блоге был особенно полезен для этого, и я проследил каждый из примеров :

http://blogs.msdn.com/b/meek/archive/2008/05/02/linq-to-entities-combining-predicates.aspx

. Эта статья CodeProject также была полезна:

http://www.codeproject.com/Articles/24255/Exploring-Lambda-Expression-in-C

Однако при объединении.OrderBy Func с.Where Func они имеют разные общие аргументы. В случае.Where это Func, а в случае.OrderBy это Func.

Слияние этих двух выражений, на первый взгляд, не так просто, как слияние двух с одинаковыми общими аргументами.

Встроенная в -функция Func -Expression -, производящая -механизм (, не уверенный в точном термине ), может комбинировать.Where Func с.OrderBy Func. Мне любопытно, что происходит под капотом, когда эти два выражения сливаются в одно System.Linq.Expressions.Expression. Является ли это возможным,и если да, то как бы вы объединили Expression>с Expression>, предполагая, что сущность имеет один и тот же тип в каждом выражении?

5
задан Community 23 May 2017 в 11:49
поделиться