在C#中如何在一定长度后删除数组中的项?

时间:2013-02-27 01:17:59

标签: c# collections

如果我有一个对象数组,我想在一定长度后删除所有项目

例如,如果数组的起始长度为10,并且我只想保留数组中的前5个项目,并在此之后删除所有内容。注意:数组可能小于5,什么都不做。

  int startLength = 10;
  int maxLength = 5;
  List<MYObject> myList = CreateListofObjects(startLength);

我想要像“RemoveAfter”这样的东西,其中“RemoveAfter”会做这样的事情:

  myList = myList.RemoveAfter(maxLength);

  Assert.IsTrue(myList.Count() ==5);

3 个答案:

答案 0 :(得分:7)

myList = myList.Take(maxLength).ToList();

[注意:这会创建一个新列表,我们将其分配给原始列表占位符(myList),而不是更改原始列表。 ]

答案 1 :(得分:2)

TakeToList可能有用(也会创建新列表)

 myList = myList.Take(maxLength).ToList();

如果您需要保留列表 - RemoveRange也在那里:

 myList.RemoveRange(maxLength, myList.Count - maxLenght);

注意:确保样本适用于列表的项目数少于maxLength的情况。

答案 2 :(得分:2)

您正在寻找RemoveRange

示例:

if(myList.Count() > maxLength) {
    myList.RemoveRange(maxLength, (mylist.Count()-maxLength));
}