如何截断列表?

时间:2010-09-23 02:43:50

标签: c#

删除System.Collections.Generic.List<T>中第n个元素之后的每个元素的最简单方法是什么?

5 个答案:

答案 0 :(得分:32)

如果您可以使用RemoveRange方法,只需执行以下操作:

list.RemoveRange(index, count);

索引是从何处开始,count是要移除多少。因此,要删除从某个索引到结尾的所有内容,代码将为:

list.RemoveRange(index, list.Count - index);

相反,您可以使用:

list.GetRange(index, count);

但是这会创建一个新列表,可能不是你想要的。

答案 1 :(得分:10)

没有LINQ快速......

    while (myList.Count>countIWant) 
       myList.RemoveAt(myList.Count-1);

答案 2 :(得分:3)

list.Take(n);

答案 3 :(得分:2)

如果LINQ不是一个选项,您可以向后遍历列表:

for(int i = list.Count - 1; i >= index; i--)
{
    list.RemoveAt(i);
}

答案 4 :(得分:1)

以下是执行此操作的示例应用

    static void Main(string[] args)
    {
        List<int> lint = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        Console.WriteLine("List Elements");
        lint.ForEach(delegate(int i) {  Console.WriteLine(i); });

        lint.RemoveRange(8, lint.Count - 8);

        Console.WriteLine("List Elements after removal");
        lint.ForEach(delegate(int i) { Console.WriteLine(i); });

        Console.Read();

    }