2

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

例如,如果数组的起始长度为 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);
4

3 回答 3

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

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

于 2013-02-27T01:20:22.913 回答
2

Take并且ToList可以工作(它也会创建新列表)

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

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

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

注意:确保示例适用于列表中的项目少于 maxLength 的情况。

于 2013-02-27T01:21:39.230 回答
2

你正在寻找RemoveRange

例子:

if(myList.Count() > maxLength) {
    myList.RemoveRange(maxLength, (mylist.Count()-maxLength));
}
于 2013-02-27T01:22:43.593 回答