Почему мой метод удаляет только первую (в алфавитном порядке) запись в моем списке? С#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 FullSeriesList = 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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