我试图从列表中删除最后两行,使用文本文档我这样做:
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);
答案 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读取逻辑期间放置。