如何:从List <string> </string>中删除项目

时间:2014-05-30 11:55:01

标签: c# string list listview selecteditem

如何:从列表中删除项目

我有以下代码段...

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);

4 个答案:

答案 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.. */ }