Ich habe eine Liste in c #, in der ich Listenfelder hinzufüge. Jetzt muss ich die Bedingung überprüfen, wenn die Bedingung erfüllt ist. Dann muss ich die letzte Zeile aus der Liste entfernen. Hier ist mein Beispielcode.
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
}
}
Meine Frage ist also, wie Sie die letzte Zeile aus der Liste in c # .. entfernen. Bitte helfen Sie mir.
Da diese Frage nun gut in Suchmaschinen funktioniert, lautet die direkte Antwort auf diese Frage:
if(rows.Any()) //prevent IndexOutOfRangeException for empty list
{
rows.RemoveAt(rows.Count - 1);
}
Allerdings ...Im konkreten Fall dieser Frage ist es sinnvoller, die Zeile nicht an erster Stelle hinzuzufügen:
Row row = new Row();
//...
if (!row.cell[0].Equals("Something"))
{
rows.Add(row);
}
TBH, ich würde noch einen Schritt weiter gehen, indem ich "Something"
gegen user.""
teste und nicht einmal eine Row
instanziiere, es sei denn, die Bedingung ist erfüllt, aber da user.""
nicht kompiliert wird, werde ich ' Ich lasse das als Übung für den Leser.
Ich denke, der effizienteste Weg, dies zu tun, ist die Verwendung von RemoveAt
:
rows.RemoveAt(rows.Count - 1)
rows.RemoveAt(rows.Count - 1);
Sie können die List<T>.RemoveAt
-Methode verwenden:
rows.RemoveAt(rows.Count -1);
wenn Sie es öfter tun müssen, können Sie sogar eine eigene Methode erstellen, um das letzte Element zu platzieren. etwas wie das:
public void pop(List<string> myList) {
myList.RemoveAt(myList.Count - 1);
}
oder sogar anstelle von void können Sie den Wert wie folgt zurückgeben:
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;
}
beachten Sie, dass der Rückgabetyp der zweiten Methode nicht void ist. Es ist string b/c. Wir möchten, dass die Funktion einen String zurückgibt ...