Не используйте LINQ, говорили они А почему - не говорили. Исправляем ситуэйшн. Что такое LINQ и как с ним работать я рассказывать здесь не буду, это прекрасно передано в видео, которым я уже делился однажды. А перейду, непосредственно к вопросу, почему же говорят не использовать LINQ, при этом часто сопровождается магическим "память жрёт". Жрёт память - это да, но далеко не всегда, а в конкретных случаях. И нас, как разработчиков интересует не столько размер потребляемой памяти, сколько частота ее выделения. Ведь выделение памяти вызывает ее фрагментацию, а от этого и разные приколы вылезают. Подробнее я рассказывал в видео "Как работает память в C#". Соответственно самое важное при использовании LINQ - понимание, что им не рекомендуется пользоваться в местах, которые вызываются часто. Update, например, - не место для использования LINQ (еще раз повторюсь, речь идет о тех методах LINQ, которые все-таки выделяют память, остальными пользуйтесь на здоровье и в Update). Иными словами, LINQ безжалостно можно использовать в различных инициализациях. Однако, чтобы полностью закрыть этот вопрос, давайте перечислим методы LINQ со звездочкой (выделяют память) (все они возвращают созданную коллекцию, если что): 1️⃣ ToList() 2️⃣ ToArray() 3️⃣ ToDictionary() 4️⃣ ToHashSet() 5️⃣ Методы групировки Concat(), Union(), GroupBy(), GroupJoin() 6️⃣ Метод сортировки OrderBy() Немного, правда? А криков-то было. UPD: Методы First(), Any() и другие и подобные используют память для хранения результата, это либо значение, либо ссылка. Но нужно иметь ввиду, что память активно используется делегатами, применяемыми для этих методов, так что если юзаете их в частоиспользуемом месте, делегаты лучше закешировать. #полезное #советы
Всем привет! Сегодня разберёмся что такое LINQ-запросы и лямбда-выражения, а также узнаем, как с их помощью упростить свой код в плагинах для Revit. Введение LINQ, что означает Language Integrated Query, то есть интегрированный язык запросов, появился в C# достаточно давно. Его методы находятся в пространстве имён Syctem.LINQ, и представляют собой богатый набор инструментов для работы с коллекциями. Общий смысл здесь такой: у нас есть какой-то большой список, и нам нужно быстро получить из него особым образом обработанные данные...