如何从通用列表中删除项目

我有一个通用列表

如何删除项目?

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 = new list(); list.remove...??? } } 

好吧,没有什么可以删除,因为你的列表是空的(你也没有给它一个标识符,所以你的代码将无法编译)。 您可以使用Remove(T item)RemoveAt(int index)分别删除指定索引处的对象或对象(一旦实际包含某些内容)。

受控代码示例:

 void Main(...) { var list = new List(); 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 } 

根据您的意见,我得出结论,您从输入中读取学生姓名,您需要删除具有指定姓名的学生。

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

请注意,这将删除所有具有指定姓名的学生。

如果您需要删除按名称找到的第一个学生,请先使用First方法找到他,然后为实例调用Remove

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

如果您想在删除之前确保只有一名学生具有指定名称,请以类似的方式使用Single

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

请注意,如果没有一个项与谓词匹配,则Single调用将失败

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

或删除已知学生。

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

好吧,你没有给你的列表一个名字,你的一些语法是不可思议的。

 void main() { static List studentList = new List(); } // later void deleteFromStudents(Student studentToDelete) { studentList.Remove(studentToDelete); } 

此处详细介绍了更多删除函数: C#List Remove Methods

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; } 

要从网格视图中的通用列表中删除行或记录,只需编写此代码 –

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

也许您可以使用Dictionary而不是List

添加学生时,请添加其ID或名称或任何可以唯一标识它的名称。 然后你可以简单地调用myStudents.Remove(myStudentId)

试试linq:

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

我做了一个包含7张牌的程序,然后洗牌,我希望能够帮助他们

 class Program { static void Main(string[] args) { Random random = new Random(); var cards = new List(); //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 } }