如何:从列表中删除项目
我有以下代码段...
companies.Remove(listView_Test.SelectedItem.ToString());
有一个listView
包含(假设)3个没有名字的项目,只有Content
的“A”,“B”和“C”。现在当我选择listView
的项目时,我再次点击一个按钮,该按钮运行包含Remove()
/ RemoveAt()
的方法。现在,我想删除List<string> myList
行与所选项目的Content
相同的行。
编辑 Flow Flow OverFlow解决方案
int index = companies.IndexOf(companyContent);
companies.RemoveAt(index);
答案 0 :(得分:5)
您必须从列表中获取要删除的对象的索引,然后您可以:
//Assuming companies is a list
companies.RemoveAt(i);
获取您可以使用的项目的索引:
companies.IndexOf("Item");
或使用带有条件语句的for循环:
for (int i = 0; i < companies.Count; i++) {
// if it is List<String>
if (companies[i].equals("Something")) {
companies.RemoveAt(i);
}
}
答案 1 :(得分:1)
您可以按已知位置或项目中的内容删除该项目。
public static void Main()
{
List<Object> items = new List<Object>();
items.Add("test1");
items.Add("test2");
items.Add("test3");
foreach(var a in items)
Console.WriteLine(a.ToString());
Console.WriteLine("--");
items.RemoveAt(1); // remove object at position 1, in this case "test2"
foreach(var a in items)
Console.WriteLine(a.ToString());
Console.WriteLine("--");
items.RemoveAll(x => ((string) x) == "test1"); // LAMBDA query to remove by a condition
foreach(var a in items)
Console.WriteLine(a.ToString());
}
输出
test1
test2
test3
--
test1
test3
--
test3
答案 2 :(得分:0)
我真的不明白你的问题是什么,但这里有一些可能对你有用的参考资料:
如果您的问题与访问当前所选列表视图项的文本有关,请参阅ListViewItem的Text属性: http://msdn.microsoft.com/en-us/library/system.windows.forms.listviewitem.text(v=vs.110).aspx
请参阅List.Remove如果您的问题与从通用列表中删除元素有关:http://msdn.microsoft.com/en-us/library/cd666k3e(v=vs.110).aspx
答案 3 :(得分:0)
public int FindItem(List<string> haystack, string needle)
{ for (int i = 0; i < haystack.Count; i++)
if (haystack[i] == needle) return i;
return -1;
}
try {
companies.Remove(FindItem(companies, listView_Test.SelectedItem.ToString() ) );
} catch { /* not found, no problem.. */ }