Как удалить элемент из общего списка
У меня есть общий список
Как удалить элемент?
Пример:
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...???
}
}
Ответы
Ответ 1
Ну, удалить нечего, потому что ваш список пуст (вы также не дали ему идентификатор, поэтому ваш код не будет компилироваться). Вы можете использовать Remove(T item)
или RemoveAt(int index)
для удаления объекта или объекта по указанному индексу соответственно (после того, как он действительно содержит что-то).
Пробный код:
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
}
Ответ 2
Из ваших комментариев я пришел к выводу, что вы читаете имя студента из ввода, и вам нужно удалить ученика с заданным именем.
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
Обратите внимание, что это удалит всех учащихся с заданным именем.
Если вам нужно удалить первого ученика, найденного по имени, сначала используйте метод 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
вызов завершается с ошибкой, если не существует одного элемента, соответствующего предикату.
Ответ 3
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
ИЛИ удалить известного ученика.
//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);
Ответ 4
Ну, вы не указали в своем списке имя, и некоторые из ваших синтаксисов неудобны.
void main()
{
static List<Student> studentList = new List<Student>();
}
// later
void deleteFromStudents(Student studentToDelete)
{
studentList.Remove(studentToDelete);
}
Функции удаления более подробно описаны здесь: С# List Remove Methods
Ответ 5
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;
}
Ответ 6
Чтобы удалить строку или запись из общего списка в виде сетки, просто напишите этот код -
List<Address> people = new List<Address>();
Address t = new Address();
people.RemoveAt(e.RowIndex);
grdShow.EditIndex = -1;
grdShow.DataSource = people;
grdShow.DataBind();
Ответ 7
Возможно, вы можете использовать Dictionary<string, Student>
вместо List<Student>
.
Когда вы добавляете ученика, добавьте его идентификатор или имя или все, что может однозначно идентифицировать его. Затем вы можете просто вызвать myStudents.Remove(myStudentId)
Ответ 8
Попробуйте linq:
var _resultList = list.Where(a=>a.Name != nameToRemove).Select(a=>a);
Ответ 9
Я создал программу, содержащую 7 карт, затем перетасовываю и надеюсь, что поможет им
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
}
}