Почему мой метод удаляет только первую (в алфавитном порядке) запись в моем списке? С#C#

Место общения программистов C#
Anonymous
Почему мой метод удаляет только первую (в алфавитном порядке) запись в моем списке? С#

Сообщение Anonymous »

Я изучаю C# и в настоящее время работаю над методом удаления.
пользователю предоставляется TreeView, и у каждого узла есть флажок. проверенные узлы помещаются в список toBeDeleted, а затем запускается эта серия методов

Код: Выделить всё

on click of the delete button

Код: Выделить всё

private void button1_Click(object sender, EventArgs e)
{

foreach(TreeNode node in toBeDeleted)
{
if(node.Tag != null)
{
if(node.Tag is Series selectedSeries)
{
FileManager.DeleteSeries(selectedSeries);
}
}
}
FileManager.fullSeriesList = FileManager.LoadFromFile(FileManager.seriesFile);
_treeViewManager.UpdateTreeView(_seriesTree);
_treeViewManager.UpdateTreeView(DeleteSeriesTree);
}

Код: Выделить всё

delete method

Код: Выделить всё

public static void DeleteSeries(Series series)
{
List newList = fullSeriesList
.Where(i =>
i.ID != series.ID
&& i.SeriesName != series.SeriesName)
.ToList();
foreach(Series s in newList)
{
Debug.WriteLine(s.SeriesName);
}
SaveFullList(newList, seriesFile);
}

Код: Выделить всё

method that saves it to the data file

Код: Выделить всё

public static void SaveFullList(List fullSeriesList, string filePath)
{
string jsonString = JsonSerializer.Serialize(fullSeriesList, new JsonSerializerOptions { WriteIndented = true });

File.WriteAllText(filePath, jsonString);

fullSeriesList = LoadFromFile(seriesFile);
}

Код: Выделить всё

UpdateTreeView
просто обновляет пользовательский интерфейс новым списком
проблема в том, что если у меня есть такой список шоу

Код: Выделить всё

public Series(long id, string seriesName)
{
Id = id;
SeriesName = seriesName;
}

public List SeriesList = new List
{
new Series(1, "Breaking Bad"),
new Series(2, "Game of Thrones"),
new Series(3, "Stranger Things"),
new Series(4, "The Office")
};
и я выбираю «Очень странные дела» в TreeView и нажимаю «Удалить», вместо этого будет удалено «Во все тяжкие». Debug.WriteLine в DeleteSeries и все TreeView также отражают это изменение и теряют первую (в алфавитном порядке) запись.
Я попытался сопоставить его с идентификатором и SereisName на случай, если двум элементам мог быть присвоен одинаковый идентификатор, но это ничего не изменило. в коде нет другого места, где элементы списка изменяются, кроме места, где он изначально загружается из файла JSON и расставляется по алфавиту сразу после заполнения списка

Подробнее здесь: https://stackoverflow.com/questions/791 ... list-c-sha

Вернуться в «C#»