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