Сообщение Re[16]: «Собаку съел» от 26.01.2017 6:55
Изменено 26.01.2017 7:52 Serginio1
Re[16]: «Собаку съел»
Здравствуйте, 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.
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.
Re[16]: «Собаку съел»
Здравствуйте, 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.
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.