web-dev-qa-db-fra.com

Comment supprimer un article d'une liste générique

J'ai une liste générique

Comment puis-je supprimer un article?

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

Eh bien, il n’ya rien à supprimer parce que votre liste est vide (vous n’avez pas non plus donné d’identifiant, donc votre code ne sera pas compilé). Vous pouvez utiliser les fonctions Remove(T item) ou RemoveAt(int index) pour supprimer un objet ou l’objet situé à un index spécifié (une fois qu’il contient réellement quelque chose).

Exemple de code conçu:

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.


D'après vos commentaires, je conclus que vous avez lu le nom de l'étudiant à partir de l'entrée et que vous devez supprimer l'étudiant avec son prénom.

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

Notez que cela supprimera tous les étudiants avec le prénom.

Si vous devez supprimer le premier étudiant trouvé par son nom, utilisez d'abord la méthode First pour le trouver, puis appelez Remove pour l'instance:

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

Si vous voulez vous assurer qu'il n'y a que un étudiant avec le prénom avant de le retirer, utilisez Single de la même manière:

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

Notez que Single call échoue s'il n'y a pas exactement un élément correspondant au prédicat.

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

OU supprimer un étudiant connu.

//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

Pour supprimer une ligne ou un enregistrement d'une liste générique en mode grille, il suffit d'écrire ce 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

Eh bien, vous n’avez pas donné de nom à votre liste et votre syntaxe n’est pas parfaite.

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

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

Il existe plusieurs fonctions de suppression détaillées ici: C # List Remove Methods

1
Andrew Arnold

J'ai fait un programme qui contient 7 cartes, puis mélange et j'espère prendre afin de les aider

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

    }



}

Essayez linq: 

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

Peut-être que vous pouvez utiliser un Dictionary<string, Student> au lieu du List<Student>.

Lorsque vous ajoutez un étudiant, ajoutez son ID, son nom ou tout autre élément permettant de l'identifier de manière unique. Ensuite, vous pouvez simplement appeler myStudents.Remove(myStudentId)

0
Steve B