从c#中的列表中删除

本文关键字:删除 列表 | 更新日期: 2023-09-27 18:00:08

我有一个wpf c#应用程序,它将任务从文本文件加载到treeView,有关任务的数据正在加载到列表中,我试图删除列表中位置I的数据,但我不知道如何删除。我有这个循环检查,看看所选的treeView项目是否等于列表中位置I的项目,如果是,我想从列表中删除该项目。这是for循环,我只是想知道如何进行实际的删除,我已经尝试过在msdna上找到的.delete.remove之类的东西。

for (int i = 0; i < name.Count; ++i)
{
       string selectName = ((TreeViewItem)(treeView1.SelectedItem)).Header.ToString();
       if (selectName == name[i])
       {
       //name.Remove(i) or name.Remove[i] or name[i].Remove
       }
}

从c#中的列表中删除

如果名称是List<T>,那么如果我正确理解问题,您可能想要name.RemoveAt(i)

或者,您可以只使用name.RemoveAll(n => n == selectName);而不是for循环。

怎么样:

string selectName = ((TreeViewItem)(treeView1.SelectedItem)).Header.ToString();
name.RemoveAll(x => x == selectedName);

您必须给List.Remove()一个对象,而不是索引。

所以,假设名称是一个列表,

name.Remove((TreeViewItem)treeView1.SelectedItem);

根据您的应用程序需要,您的数据结构应该有一段时间的父子关系。您所要做的就是删除从父级中选择的Child,而WPF中的TreeView应该会自动更新。

我建议您阅读Josh Smith关于将ViewModelsTreeView结合使用以便于管理的文章。相信我,你越早开始使用更强的数据结构,你的生活就会轻松得多,记住TreeView只代表所提供的数据,你应该有其他方法直接编辑数据,而不是TreeView