Re[16]: «Собаку съел»
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.01.17 06:55
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>Здравствуйте, samius, Вы писали:


S>>>Однако, строим ли мы дерево вручную, или компилятор его строит, способ вызова оператора сравнения будет одним и тем же. Если, конечо, деревья выражений транслируются в IL. Т.е. никакого инлайнинга по сравнению с написанным в обычном C# коде выражением "field >= start".


S>> Конечно транслируются Программирование на C# 5.0

S>Это я уточняю вариант. Т.е. пишу что речь не про SQL или еще что-то там. Т.е. когда деревья транслируются в IL, то способ вызова оператора сравнения невозможно отличить от того что получается при обычной компиляции исходника C#. Именно это я хотел сказать.

Я же тебе дал ссылкую Там показано во, что транслуруются Expression<Func<int,bool>> greaterThenZero=value=> value>0;

А вот Iquerable принимает как раз Expression. То есть когда ты видишь Where(value=> value>0) то это не Func<int,bool> а Expression<Func<int,bool>>
которые могут и компилироваться в инлайн. Ты же передаешь не функцию, а дерево


S>> Деревья выражений собираются и компилируются в рантайме.

S>> Мы можем собирать SQl выражение из разных кусочков, но на выходе должны получить один Sql запрос.
S>Это известно со времен LinqToSQL
Правильно, но работаем мы не с Func, а с Expression.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 26.01.2017 7:52 Serginio1 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.