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...???
}
}
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
}
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.
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);
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();
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;
}
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
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);
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)