lstCases хранит ссылку на list который ты создал с помощью new List<...>(), ты в list пихаешь копию ссылки, которая хранится в lstCases, и когда ты в конце делаешь lstCases = new List<...>(), то создается новый объект в памяти и lstCases присваивается уже новая ссылка на новый объект, а ссылка в list остается не изменной, и указывает на старый объект, а clear это метод объекта, и при вызове очищает значения в объекте, но ссылки в lstCases и list все равно указывают на этот объект, который уже без элементов