如何删除添加到列表中的最后一个元素
本文关键字:列表 最后一个 元素 添加 何删除 删除 | 更新日期: 2023-09-27 17:59:41
我在c#中有一个List,我正在其中添加列表字段。现在,在添加时,我必须检查条件,如果条件满足,那么我需要从列表中删除添加的最后一行。这是我的示例代码。。
List<> rows = new List<>();
foreach (User user in users)
{
try
{
Row row = new Row();
row.cell = new string[11];
row.cell[1] = user."";
row.cell[0] = user."";
row.cell[2] = user."";
rows.Add(row);
if (row.cell[0].Equals("Something"))
{
//here i have to write code to remove last row from the list
//row means all the last three fields
}
}
所以我的问题是如何从c#中的列表中删除最后一行。请帮帮我。
我认为最有效的方法是使用RemoveAt
:
rows.RemoveAt(rows.Count - 1)
这个问题的直接答案是:
if(rows.Any()) //prevent IndexOutOfRangeException for empty list
{
rows.RemoveAt(rows.Count - 1);
}
然而在这个问题的特定情况下,不首先添加行更有意义:
Row row = new Row();
//...
if (!row.cell[0].Equals("Something"))
{
rows.Add(row);
}
TBH,我会更进一步,根据user.""
测试"Something"
,甚至不实例化Row
,除非条件得到满足,但鉴于user.""
不会编译,我将把它留给读者练习。
rows.RemoveAt(rows.Count - 1);
您可以使用List<T>.RemoveAt
方法:
rows.RemoveAt(rows.Count -1);
如果您需要更频繁地执行此操作,您甚至可以创建自己的方法来弹出最后一个元素;像这样的东西:
public void pop(List<string> myList) {
myList.RemoveAt(myList.Count - 1);
}
或者甚至可以返回如下值而不是void:
public string pop (List<string> myList) {
// first assign the last value to a seperate string
string extractedString = myList(myList.Count - 1);
// then remove it from list
myList.RemoveAt(myList.Count - 1);
// then return the value
return extractedString;
}
请注意,第二个方法的返回类型不是void,而是stringb/c,我们希望该函数返回一个字符串。。。
我宁愿使用LINQ中的Last()
来做这件事。
rows = rows.Remove(rows.Last());
或
rows = rows.Remove(rows.LastOrDefault());