Сообщение Re[14]: «Собаку съел» от 25.01.2017 17:14
Изменено 25.01.2017 17:29 Serginio1
Re[14]: «Собаку съел»
Здравствуйте, samius, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, samius, Вы писали:
S>>>Без понятия. Точнее — это код. Но какое отношение он имеет к инлайнингу параметрически полиморфного компаратора — я все еще пытаюсь выяснить. Даже с учетом того что Func<Y, bool> можно заменить на Func<Y, Y, bool>, все равно не натягивается.
S>> Дело в том, что внутри Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters)
S>>деревья и разворачиваются.
S>>Динамическое построение Linq запроса
S>Благодярю за равернутый пример и ссылку.
S>>
S>Однако, строим ли мы дерево вручную, или компилятор его строит, способ вызова оператора сравнения будет одним и тем же. Если, конечо, деревья выражений транслируются в IL. Т.е. никакого инлайнинга по сравнению с написанным в обычном C# коде выражением "field >= start".
Деревья выражений собираются и компилируются в рантайме.
Мы можем собирать SQl выражение из разных кусочков, но на выходе должны получить один Sql запрос.
S>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, samius, Вы писали:
S>>>Без понятия. Точнее — это код. Но какое отношение он имеет к инлайнингу параметрически полиморфного компаратора — я все еще пытаюсь выяснить. Даже с учетом того что Func<Y, bool> можно заменить на Func<Y, Y, bool>, все равно не натягивается.
S>> Дело в том, что внутри Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters)
S>>деревья и разворачиваются.
S>>Динамическое построение Linq запроса
S>Благодярю за равернутый пример и ссылку.
S>>
S>> var firstCondition = Expression.GreaterThanOrEqual(prop, startExpr); // Param_0.field >= start
S>> var secondCondition = Expression.LessThanOrEqual(prop, stopExpr); // Param_0.field <= stop
S>>
S>Однако, строим ли мы дерево вручную, или компилятор его строит, способ вызова оператора сравнения будет одним и тем же. Если, конечо, деревья выражений транслируются в IL. Т.е. никакого инлайнинга по сравнению с написанным в обычном C# коде выражением "field >= start".
Деревья выражений собираются и компилируются в рантайме.
Мы можем собирать SQl выражение из разных кусочков, но на выходе должны получить один Sql запрос.
Re[14]: «Собаку съел»
Здравствуйте, samius, Вы писали:
S>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, samius, Вы писали:
S>>>Без понятия. Точнее — это код. Но какое отношение он имеет к инлайнингу параметрически полиморфного компаратора — я все еще пытаюсь выяснить. Даже с учетом того что Func<Y, bool> можно заменить на Func<Y, Y, bool>, все равно не натягивается.
S>> Дело в том, что внутри Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters)
S>>деревья и разворачиваются.
S>>Динамическое построение Linq запроса
S>Благодярю за равернутый пример и ссылку.
S>>
S>Однако, строим ли мы дерево вручную, или компилятор его строит, способ вызова оператора сравнения будет одним и тем же. Если, конечо, деревья выражений транслируются в IL. Т.е. никакого инлайнинга по сравнению с написанным в обычном C# коде выражением "field >= start".
Конечно транслируются Программирование на C# 5.0
Деревья выражений собираются и компилируются в рантайме.
Мы можем собирать SQl выражение из разных кусочков, но на выходе должны получить один Sql запрос.
S>Здравствуйте, Serginio1, Вы писали:
S>>Здравствуйте, samius, Вы писали:
S>>>Без понятия. Точнее — это код. Но какое отношение он имеет к инлайнингу параметрически полиморфного компаратора — я все еще пытаюсь выяснить. Даже с учетом того что Func<Y, bool> можно заменить на Func<Y, Y, bool>, все равно не натягивается.
S>> Дело в том, что внутри Expression.Lambda<Func<T, bool>>(Expression.Invoke(func, propertyExpression.Body), propertyExpression.Parameters)
S>>деревья и разворачиваются.
S>>Динамическое построение Linq запроса
S>Благодярю за равернутый пример и ссылку.
S>>
S>> var firstCondition = Expression.GreaterThanOrEqual(prop, startExpr); // Param_0.field >= start
S>> var secondCondition = Expression.LessThanOrEqual(prop, stopExpr); // Param_0.field <= stop
S>>
S>Однако, строим ли мы дерево вручную, или компилятор его строит, способ вызова оператора сравнения будет одним и тем же. Если, конечо, деревья выражений транслируются в IL. Т.е. никакого инлайнинга по сравнению с написанным в обычном C# коде выражением "field >= start".
Конечно транслируются Программирование на C# 5.0
Деревья выражений собираются и компилируются в рантайме.
Мы можем собирать SQl выражение из разных кусочков, но на выходе должны получить один Sql запрос.