我在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#中的列表中删除最后一行。 请帮帮我。
答案 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我们希望该函数返回一个字符串......