从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
}
}
如果名称是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关于将ViewModels
和TreeView
结合使用以便于管理的文章。相信我,你越早开始使用更强的数据结构,你的生活就会轻松得多,记住TreeView
只代表所提供的数据,你应该有其他方法直接编辑数据,而不是TreeView
。