如何删除添加到列表中的最后一个元素

本文关键字:列表 最后一个 元素 添加 何删除 删除 | 更新日期: 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());