如何删除添加到List中的最后一个元素?

时间:2014-04-23 13:17:10

标签: c# list arraylist

我在c#中有一个List,我在其中添加列表字段。现在添加i时必须检查条件,如果条件满足,那么我需要删除列表中添加的最后一行。 这是我的示例代码..

    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#中的列表中删除最后一行。 请帮帮我。

6 个答案:

答案 0 :(得分:76)

我认为最有效的方法是使用RemoveAt

rows.RemoveAt(rows.Count - 1)

答案 1 :(得分:27)

这个问题的直接答案是:

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,我会更进一步,针对"Something"测试user."",除非条件满足,否则甚至不会实例化Row,但看作user.""不会编译,我会把它作为读者的练习。

答案 2 :(得分:12)

rows.RemoveAt(rows.Count - 1);

答案 3 :(得分:6)

您可以使用List<T>.RemoveAt方法:

rows.RemoveAt(rows.Count -1);

答案 4 :(得分:2)

我宁愿使用LINQ的// Define a plain object var foo = { foo: "bar", hello: "world" }; // Pass it to the jQuery function var $foo = $( foo ); // Test accessing property values var test1 = $foo.prop( "foo" ); // bar // Change the original object foo.foo = "koko"; // Test updated property value var test2 = $foo.prop( "foo" ); // koko 来实现。

Last()

rows = rows.Remove(rows.Last());

答案 5 :(得分: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;
}

注意第二种方法的返回类型不是空的,它是字符串 b / c我们希望该函数返回一个字符串......