Шел очередной день самоизоляции, и я делал один из тех проектов для себя, которые мы забрасываем через пару дней после того как начали. Ну вы знаете, тот проект, который сделает вас знаменитым, позволит вам выучить новый ЯП, новый фреймворк и все такое. В общем, это был самый обычный день, самой обычной пандемии. Ничего не предвещало беды, пока одна библиотека, которой я пользовался для работы с массивами не выпала со stack overflow… И вот тут-то все и запузырилось.
Рубрика «linq» - 2
LINQ на JavaScript для самых маленьких
2020-08-15 в 12:39, admin, рубрики: javascript, JS, linq, TypeScriptНеудачная статья про ускорение рефлексии
2020-05-02 в 20:46, admin, рубрики: .net, C#, linq, performace, reflection, высокая производительность, производительность, Серверная оптимизация, управление разработкойСразу объясню название статьи. Изначально планировалось дать хороший, надежный совет по ускорении использования рефлекшена на простом, но реалистичном примере, однако в ходе бенчмаркинга выяснилось, что рефлексия работает не так медленно, как я думал. Да и вообще проблема не с ней. Так как пример достаточно жизненный и реализованный в принципе как обычно делается в энтерпрайзе, получилось достаточно интересная, как мне кажется, демонстрация.
Читать полностью »
OData babel плагин
2020-04-19 в 15:32, admin, рубрики: babel plugin, fluent, javascript, linq, odata, TypeScript
Статья описывает трансляцию кода TypeScript в OData запросы во время компиляции программы.
Плагин babel-plugin-ts2odata выполняет разбор JavaScript AST с помощью библиотеки TsToOdata описание которой в моей предыдущей статье Типизированные запросы OData в TypeScript.
Типизированные запросы OData в TypeScript
2020-02-22 в 20:04, admin, рубрики: .net, fluent, linq, odata, TypeScript
Традиционно запросы OData к данным выражаются в виде простых строк без проверки типов при компиляции или без поддержки IntelliSense, кроме того, разработчику приходится изучать синтаксис языка запросов. Данная статья описывает библиотеку TsToOdata, которая превращает запросы в удобную языковую конструкцию и применяется аналогично классам и методам. Вы создаете запросы к строго типизированным коллекциям объектов с помощью ключевых слов языка TypeScript и знакомых операторов.
Методы оптимизации LINQ-запросов в C#.NET
2020-02-20 в 13:52, admin, рубрики: .net, C#, linq, linq to sql, Microsoft SQL Server, MS Sql Server, orm, sql, sql server, t-sql, Администрирование баз данных, базы данныхВведение
В этой статье рассматривались некоторые методы оптимизации LINQ-запросов.
Здесь же приведем еще некоторые подходы по оптимизации кода, связанные с LINQ-запросами.
Читать полностью »
Некоторые аспекты оптимизации LINQ-запросов в C#.NET для MS SQL Server
2019-07-12 в 6:48, admin, рубрики: .net, C#, linq, linq to sql, Microsoft SQL Server, sql, sql server, t-sql, Visual Studio, Администрирование баз данных, оптимизацияLINQ вошел в .NET как новый мощный язык манипуляции с данными. LINQ to SQL как часть его позволяет достаточно удобно общаться с СУБД с помощью например Entity Framework. Однако, достаточно часто применяя его, разработчики забывают смотреть на то, какой именно SQL-запрос будет генерировать LINQ.
Читать полностью »
Помогаем Queryable Provider разобраться с интерполированными строками
2019-03-03 в 18:32, admin, рубрики: .net, C#, dotnet, entity framework core, expression trees, interpolation, linq, linq2sql, string, ПрограммированиеТонкости Queryable Provider
Queryable Provider не справляется вот с этим:
var result = _context.Humans
.Select(x => $"Name: {x.Name} Age: {x.Age}")
.Where(x => x != "")
.ToList();
Он не справится с любым выражением, которое будет использовать интерполированную строку, но без трудностей разберет такое:
var result = _context.Humans
.Select(x => "Name " + x.Name + " Age " + x.Age)
.Where(x => x != "")
.ToList();
Особенно болезненно править баги после включение ClientEvaluation(исключениe при вычислении на клиенте), все профайлы автомаппера должны быть подвергнуты жесткому анализу, на поиск этой самой интерполяции. Давайте разберемся в чем дело и предложим свое решение проблемы
Деревья выражений в enterprise-разработке
2018-09-26 в 12:09, admin, рубрики: .net, .net clr, C#, clr, dotnext, dotnext2018moscow, expression tree, expression trees, linq, Блог компании JUG.ru Group, Компиляторы, Программирование, системное программированиеДля большинства разработчиков использование expression tree ограничивается лямбда-выражениями в LINQ. Зачастую мы вообще не придаем значения тому, как технология работает «под капотом».
В этой статье я продемонстрирую вам продвинутые техники работы с деревьями выражений: устранение дублирования кода в LINQ, кодогенерация, метапрограммирование, транспиляция, автоматизация тестирования.
Вы узнаете, как пользоваться expression tree напрямую, какие подводные камни приготовила технология и как их обойти.

Под катом — видео и текстовая расшифровка моего доклада с DotNext 2018 Piter.
Читать полностью »
LinqToSolr — используем LINQ для получения данных из Solr
2017-04-21 в 6:59, admin, рубрики: .net, C#, linq, solr
В силу того, что в нашей компании в качестве платформы полнотекстового поиска выбор пал на Solr, возникло сильное желание упростить работу с запросами к Solr через использование LINQ выражений.
Перешерстив интернет на наличие альтернатив, я пришел к выводу, что на данный момент необходимой мне библиотеки в общем доступе нет. Максимум, что удалось найти, это очень частичную реализацию запросов в Solr.NET (и скептический комментарий самого автора).
Результатом стала маленькая библиотека LinqToSolr, которая содержит в себе реализацию интерфейса IQueriable<> с возможностью конвертации запросов в понятный Solr API и обратно.
Читать полностью »
Функциональный C#
2017-03-30 в 18:25, admin, рубрики: .net, C#, Either, functional programming, linq, PipeTo, функциональное программированиеC# — язык мультипарадигмальный. В последнее время крен наметился в сторону функциональщины. Можно пойти дальше и добавить еще немного методов-расширений, позволяющих писать меньше кода, не претендуя при этом на то, чтобы превратить язык в F#.Читать полностью »
