Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Sharov, Вы писали:
_>>>Во-первых создание и использование деревьев выражений вполне себе часто встречается в mainstream языках. Более того, вокруг этого даже построено множество сложных библиотек, реализующих различные DSL'и (далеко не только SQL).
S>>Все-таки у linq есть поддержка компилятора, т.е. встроен в язык, а у этих библиотек нет.
_>С учётом того как встроено, то лучше уж была бы библиотека, а не такая кривизна.
Посмотри
LinqOptimizer
_>>>Есть определённый набор претензий к реализации этой идеи в .net (т.к. некоторые особенности деревьев выражений linq портят производительность),
S>>Какие особенности?
_>Необходимость создавать дерево, обходить его с помощью рефлексии и генерировать нужный нам код при каждом вызове. Как минимум это должно было бы происходить один раз при старте приложения, а по нормальному вообще на стадии компиляции (с помощью метапрограммирования и статической интроспекции).
https://stackoverflow.com/questions/1447635/linq-between-operator
Ну затраты на создания дерева не большие. Так кто тебе мешает закешировать запросы?
https://docs.microsoft.com/ru-ru/dotnet/framework/data/adonet/ef/language-reference/compiled-queries-linq-to-entities
https://dzone.com/articles/performance-of-compiled-queries-in-entity-framewor