如何从列表中删除最后两行

时间:2017-01-05 19:43:39

标签: c# list indexing

我试图从列表中删除最后两行,使用文本文档我这样做:

var lines = System.IO.File.ReadAllLines(doc.txt); 
System.IO.File.WriteAllLines(doc.txt, lines.Take(lines.Length - 2).ToArray());

但是当我试图用列表

做同样的事情时
 List<string> myList = new List<string>();

这样,我没有结果:

myList.RemoveAt(myList.Count - 2);

3 个答案:

答案 0 :(得分:5)

您可以使用{ "id": "1", "val1": "1-val1", "val2": "1-val2" } // This would be $1 { "id": "2", "val1": "2-val1", "val2": "2-val2" } // This would be $2 ,同时注意索引从零开始,而RemoveRange则不是。

Count

这将删除list.RemoveRange(list.Count - 2, list.Count - 1);

中的最后两行

答案 1 :(得分:4)

RemoveAt方法获取索引作为参数。因此,如果您执行此代码:

list.RemoveAt(myList.Count - 2);

您将删除位置myList.Count - 2上的项目,而不是2项。因此,如果要删除最后两项,可以执行以下操作:

list.RemoveAt(list.Count - 1);
list.RemoveAt(list.Count - 1);

或者更好的方法是在他的回答中使用RemoveRange作为abdul建议。

答案 2 :(得分:-2)

List<T>并不意味着按元素索引。你需要一个数组或Dictionary才能做到这一点。

因此,如果list包含所有行,则需要按内容查找行...或者更好的是在您的示例中,将最后2行保留在第一行的列表中在IO读取逻辑期间放置。