Баг linq, entity FrameWork

104
13 июня 2021, 13:40

В строке Buffer = unBuffer; unBuffer.Clear();

вместе с UnBuffer чиститься и сам Buffer почему то, вот полный код

public List<SubForum> GetAllTreeSubForums(SubForum subForum)
    {
        List<SubForum> allSubList = new List<SubForum>(); // Основной список
        bool isOver = false;
        var Buffer = GetChildSubForum(subForum); // В начале это 1 глубина
        var unBuffer = new List<SubForum>();
        while(isOver == false)
        {
            allSubList.AddRange(Buffer);
            foreach(var podBuffer in Buffer)
            {
                var a = GetChildSubForum(podBuffer);
                unBuffer.AddRange(a);
            }
            if (unBuffer.Count() == 0)
            {
                allSubList.AddRange(Buffer);
                isOver = true;
            }
            Buffer = unBuffer;
            unBuffer.Clear();
        }
        return allSubList;
    }
Answer 1
Buffer = unBuffer;

После этой строки обе переменные указывают на один и тот же объект (из-за var не знаю тип, но предполагаю, что List<SubForum>). Вы его очищаете, после этого обе переменные указывают на все тот же список, но уже пустой. Если вы хотели скопировать не ссылку, а сам список, вам следовало воспользоваться копирующим конструктором:

Buffer = List<SubForum>(unBuffer);
READ ALSO
Как изменить пространство имен у формы Visual Studio

Как изменить пространство имен у формы Visual Studio

Работаю над проектом средней крупности в Visual Studio 2019Количество форм проекта дошло до "неудобного", и решил я их раскидать по папкам (сразу не додумался)

114
Сдвиг рваного массива вниз/вверх

Сдвиг рваного массива вниз/вверх

Турдность состоит в том, что сдвиг должен быть циклическим по строкам и создавать дополнительные(временные) массивы нельзяПо задаче требуеться,...

107
Вернуть результат работы команды SELECT

Вернуть результат работы команды SELECT

Предположим, что есть таблица со столбцами Имя, Фамилия и ВозрастМогу ли я посредством выполнения команды в стиле

96
GetNumberOfConsoleFonts() работает некорректно

GetNumberOfConsoleFonts() работает некорректно

В своём консольном проекте на C# я решил реализовать возможность смены шрифта консоли средствами самой программыАлгоритм действий:

103