5
У меня есть запрос Linq с select
, от моего провайдера Linq запросов это я получаю дерево выражения содержащий MethodCallExpression
, но только, как я могу получить выберите проекции из MethodCallExpression
?Получение проекции от MethodCallExpression
internal static object Execute(Expression expression, bool isEnumerable)
{
var whereExpression = expression as MethodCallExpression;
if (whereExpression == null) throw new InvalidProgramException("Error");
foreach (var arg in whereExpression.Arguments)
{
if (arg is UnaryExpression)
{
var unaryExpression = arg as UnaryExpression;
var lambdaExpression = unaryExpression.Operand as LambdaExpression;
if (lambdaExpression == null) continue;
// Here I would like to get the select projections, in this example the "word" projection ...
запрос может выглядеть следующим образом:
var queryable = new MyQueriableClass();
var query = from thing in queryable
where thing.id == 1
select word;
Используя ваш подход, 'body' является' thing.id == 1' в моем коде, а не «словом» проекции, на который я надеялся. –
@IngeHenriksen Я просто добавлял комментарий ... * Запрос 'от слова в словах, где word.Length> 0 select word' не имеет выбора слишком * (так ясно не ваш) ... Если вы используйте функциональную нотацию, будет понятно, почему: 'query.Where (word => word.Length> 0)' где 'Select' здесь? нет! – xanatos
Я обновил свой пример, возможно, теперь он яснее? –