5

我有List<sting>5 个条目。[0],[1],[2],[3],[4].

如果我使用List.Clear()所有项目都被删除。

我需要删除直到特定项目,例如直到 [1]。这意味着在我的列表中只是2 items [0] and [1]. 用 c# 怎么做?

4

5 回答 5

8

如果要删除索引1 之后的所有项(即只保留前两项):

if (yourList.Count > 2)
    yourList.RemoveRange(2, yourList.Count - 2);

如果您需要删除值为“[1]”的项目之后的所有项目,无论其索引如何:

int index = yourList.FindIndex(x => x == "[1]");
if (index >= 0)
    yourList.RemoveRange(index + 1, yourList.Count - index - 1);
于 2011-06-16T14:02:21.960 回答
4

您可以使用GetRange 方法

所以..

myList = myList.GetRange(0,2);

..会给你上面的要求。

于 2011-06-16T13:55:06.567 回答
2

你可以使用 List.RemoveWhere(Predicate).. 或者,你可以做一个 for 循环 - 向后循环,删除项目直到你之后的项目,即

for(var i = List.Count()-1; i>=0; i--) {
   var item = List[i];
   if (item != "itemThatYourLookingFor") {
      List.Remove(item);
      continue;
   }
   break;
}
于 2011-06-16T13:56:19.297 回答
0
List<string> strings = new List<string>{"a", "b", "c", "d", "e"};
List<string> firstTwoStrings = strings.Take(2).ToList();
// firstTwoStrings  contains {"a", "b"}

Take(int count)方法将为您提供计数项目。

于 2011-06-16T13:59:37.233 回答
0

您可以从列表中删除一个范围,给出起始索引和要删除的项目数。

var items = new List<string> {"0", "1", "2", "3", "4", "5"};
var index = items.IndexOf("1") + 1;

if (index >= 0)
{
    items.RemoveRange(index, items.Count - index);
}
于 2011-06-16T14:01:11.180 回答