webentwicklung-frage-antwort-db.com.de

So löschen Sie ein Element aus einer generischen Liste

Ich habe eine generische Liste

Wie entferne ich einen Artikel?

EX:

Class Student
{
    private number;
    public Number
    {
        get( return number;)
        set( number = value;)
    }

    private name;
    public Name
    {
        get( return name;)
        set( name = value;)
    }

    main()
    {
        static List<student> = new list<student>();

        list.remove...???
    }
}
15
mah_85

Nun, es ist nichts zu entfernen, da Ihre Liste leer ist (Sie haben ihr auch keinen Bezeichner gegeben, daher wird Ihr Code nicht kompiliert). Sie können Remove(T item) oder RemoveAt(int index) verwenden, um ein Objekt bzw. das Objekt an einem angegebenen Index zu entfernen (sobald es etwas enthält).

Gedachtes Codebeispiel:

void Main(...)
{
    var list = new List<Student>();
    Student s = new Student(...);
    list.Add(s);

    list.Remove(s); //removes 's' if it is in the list based on the result of the .Equals method

    list.RemoveAt(0); //removes the item at index 0, use the first example if possible/appropriate
}
24
Ed S.


Aus Ihren Kommentaren schlussfolgere ich, dass Sie den Schülernamen aus der Eingabe gelesen haben und den Schüler mit dem angegebenen Namen entfernen müssen.

class Student {
    public string Name { get; set; }
    public int Number { get; set; }

    public Student (string name, int number)
    {
        Name = name;
        Number = number;
    }
}


var students = new List<Student> {
    new Student ("Daniel", 10),
    new Student ("Mike", 20),
    new Student ("Ashley", 42)
};

var nameToRemove = Console.ReadLine ();
students.RemoveAll (s => s.Name == nameToRemove); // remove by condition

Beachten Sie, dass dadurch alle Schüler mit dem angegebenen Namen entfernt werden.

Wenn Sie den ersten nach Name gefundenen Schüler entfernen müssen, suchen Sie ihn zuerst mit der Methode First und rufen Sie dann Remove für die Instanz auf:

var firstMatch = students.First (s => s.Name == nameToRemove);
students.Remove (firstMatch);

Wenn Sie sicherstellen möchten, dass vor dem Entfernen nur ein one student mit dem angegebenen Namen vorhanden ist, verwenden Sie Single auf ähnliche Weise:

var onlyMatch = students.Single (s => s.Name == nameToRemove);
students.Remove (onlyMatch);

Beachten Sie, dass Single call fail ist, wenn nicht genau ein Element dem Prädikat entspricht.

17
Dan Abramov
List<Student> students = new List<Student>();
students.Add(new Student {StudentId = 1, StudentName = "Bob",});
students.RemoveAt(0); //Removes the 1st element, will crash if there are no entries

ODER um einen bekannten Studenten zu entfernen.

//Find a Single Student in the List.
Student s = students.Where(s => s.StudentId == myStudentId).Single();
//Remove that student from the list.
students.Remove(s);
3
DaveShaw

Um eine Zeile oder einen Datensatz aus der generischen Liste in der Rasteransicht zu löschen, schreiben Sie einfach diesen Code.

List<Address> people = new List<Address>();
Address t = new Address();
people.RemoveAt(e.RowIndex);
grdShow.EditIndex = -1;
grdShow.DataSource = people;
grdShow.DataBind();
1
SBS

int count = queue.Count;

        while(count>0)
        {
            HttpQueueItem item = queue[0];
            /// If post succeeded..
            if (snd.IsNotExceedsAcceptedLeadsPerDayLimit(item.DataSaleID, item.AcceptedLeadsPerDayLimit) && snd.PostRecord(item.DataSaleDetailID, item.PostString, item.duplicateCheckHours, item.Username, item.Password, item.successRegex))
            {
                if (item.WaitTime > 0)
                    Thread.Sleep(item.WaitTime);
                queue.Remove(item);
            }
                ///If Exceeds Accepted leads per day limit by DataSale..
            else if (!snd.IsNotExceedsAcceptedLeadsPerDayLimit(item.DataSaleID, item.AcceptedLeadsPerDayLimit))
            {
                queue.RemoveAll(obj => obj.DataSaleID == item.DataSaleID);
            }
                /// If Post failed..
            else //if (!snd.PostRecord(item.DataSaleDetailID, item.PostString, item.duplicateCheckHours, item.Username, item.Password, item.successRegex))
            {
                queue.Remove(item);
            }
            count = queue.Count;
        }
1
user1737636

Nun, Sie haben Ihrer Liste keinen Namen gegeben, und Ihre Syntax ist zum Teil ungewohnt.

void main()
{
   static List<Student> studentList = new List<Student>();
}

// later
void deleteFromStudents(Student studentToDelete)
{
   studentList.Remove(studentToDelete);
}

Es gibt weitere Entfernungsfunktionen, die hier beschrieben werden: C # List Remove Methods

1
Andrew Arnold

Ich habe ein Programm erstellt, das 7 Karten enthält, dann mischen und ich hoffe, es nehmen zu können, um ihnen zu helfen

class Program
{

    static void Main(string[] args)
    {
        Random random = new Random(); 
        var cards = new List<string>();
        //CARDS VECRTOR
        String[] listas = new String[] { "Card 1", "Card 2", "Card 3", "Card 4", "Card 5", "Card 6", "Card 7"};


        for (int i = 0; i<= cards.Count; i++)
        {

            int number = random.Next(0, 7); //Random number 0--->7


            for (int j = 0; j <=6; j++)
            {
                if (cards.Contains(listas[number])) // NO REPEAT SHUFFLE
                {

                    number = random.Next(0, 7); //AGAIN RANDOM

                }
                else
                {
                    cards.Add(listas[number]); //ADD CARD
                }
            }

        }

        Console.WriteLine(" LIST CARDS");

        foreach (var card in cards)
        {
            Console.Write(card + " ,");


        }

        Console.WriteLine("Total Cards: "+cards.Count);

        //REMOVE

        for (int k = 0; k <=6; k++)
        {
           // salmons.RemoveAt(k);
            Console.WriteLine("I take the card: "+cards.ElementAt(k));
            cards.RemoveAt(k); //REMOVE CARD
            cards.Insert(k,"Card Taken"); //REPLACE INDEX
            foreach (var card in cards)
            {
                Console.Write(card + " " + "\n");

            }


        }


        Console.Read(); //just pause

    }



}

Versuchen Sie es mit linq: 

  var _resultList = list.Where(a=>a.Name != nameToRemove).Select(a=>a);
0
Ankush Madankar

Möglicherweise können Sie einen Dictionary<string, Student> anstelle des List<Student> verwenden.

Wenn Sie einen Schüler hinzufügen, fügen Sie seine ID oder seinen Namen hinzu, oder was auch immer Sie identifizieren können. Dann können Sie einfach myStudents.Remove(myStudentId) aufrufen.

0
Steve B