Start Debugging

linq

13 статей · Страница1из2

Итератор yield return или возврат List<T>: сколько на самом деле стоит метод с IEnumerable в C#

Метод с yield return стоит один 40-байтовый объект конечного автомата на вызов, сколько бы элементов он ни выдавал; List<T> сразу выделяет весь внутренний массив. Замеры на .NET 10.0.10: итератор выигрывает по памяти и при раннем выходе, List<T> выигрывает, когда вызывающий код перечисляет больше одного раза, нуждается в Count или вызывает ToList().

Как синхронно обойти две коллекции без выделений памяти в куче в C#

Enumerable.Zip выделяет 144-208 байт на вызов и работает примерно в 10 раз медленнее обычного цикла. Для массивов и списков цикл for по двум span, обрезанным до одной длины, не выделяет память и работает быстрее всего; для синтаксиса foreach небольшой zip-перечислитель на ref struct отстаёт от него не более чем на 25%. Замеры на .NET 10.0.10 и .NET 11 RC 3.

Как экранировать подстановочные символы % и _ в запросах с EF.Functions.Like и StartsWith в EF Core 11

StartsWith, EndsWith и Contains в EF Core 11 уже сами экранируют % и _, а EF.Functions.Like этого не делает. Разбираем SQL, который генерирует EF, переиспользуемый помощник для экранирования и перегрузку с escapeCharacter, благодаря которой всё работает в SQL Server, SQLite и PostgreSQL.

Lookup<TKey, TElement> или Dictionary<TKey, List<TValue>> для повторяющихся ключей в C#

Используйте ToLookup, когда группировка строится один раз и дальше только читается: она неизменяема, для отсутствующего ключа возвращает пустую последовательность, принимает ключ null и сохраняет порядок первого появления. Используйте Dictionary<TKey, List<TValue>>, когда группы меняются после создания или проходят через границу JSON.
2026-08-23 ef-corelinqcsharp

Как писать переиспользуемые предикаты LINQ, которые EF Core транслирует в Where, Select и OrderBy

Вспомогательный метод, возвращающий bool, бросает "could not be translated". Expression<Func<T, bool>> не бросает. Разбираем, как компоновать, вкладывать и переиспользовать деревья выражений в EF Core 11 без LINQKit, с реальным SQL для каждого случая.
Вперёд