删除与文本匹配的列表项

时间:2014-02-02 15:38:56

标签: c# list

下面我检查文本值是否在LstNewItems中而不在ListOfItemsToControl中。这很好用。在if语句中我想从LstNewItems中删除与文本值匹配的行? lstNewItems是一个列表。

string name = rows[i].Cells[0].Value.ToString();

if (MyGlobals.lstNewItems.Any(x => x.sItemName == name) && !MyGlobals.ListOfItemsToControl.Any(y => y.sItemName == name)) 
{
   //Remove the row from LstNewItems that matches the text value
}

2 个答案:

答案 0 :(得分:1)

目前尚不清楚该系列究竟是什么。 如果它是通用List<>,您可以这样做:

MyGlobals.lstNewItems.RemoveAt(i);

告诉我它是否有效,否则请告诉我们该集合的确切类型。

请记住,您无法修改将其用作枚举的循环内的集合。像这样:

foreach (var x in MyGlobals.lstNewItems)
{
    MyGlobals.lstNewItems.Remove(x); // will throw an InvalidOperationException
}

答案 1 :(得分:0)

if (MyGlobals.lstNewItems.Any(x => x.sItemName == rows[i].Cells[0].Value.ToString() && !MyGlobals.ListOfItemsToControl.Any(y => y.sItemName == rows[i].Cells[0].Value.ToString()))) 
{
    MyGlobals.lstNewItems.RemoveAll(item => item.sItemName == rows[i].Cells[0].Value.ToString());
}
相关问题