Скажем, у нас есть список «А студенты» и список «B студентов». Затем мы добавляем оба списка в более общий список, называемый «студенты». Затем кто-то решает усложнить жизнь, добавив дублированный список «A Students» в общий список «учеников». Какой самый эффективный способ удалить один из дубликатов списков «А студенты»? Обратите внимание, что есть два пользовательских класса.C# Удаление дубликатов из списка, содержащего список
Общий список студентов в коде называется lstStudents. Это список, из которого я хотел бы удалить любые дубликаты.
(я пытался придумать более удачный пример, но это лучшее, что я мог бы сделать прямо сейчас.)
Я не использовать LINQ, но она доступна. ПодробнееLinq доступен.
Вот мои классы:
public class Student
{
public Student(string _name, int _age, Exam _lastExam)
{
name = _name;
age = _age;
lastExam = _lastExam;
}
public string name { get; set; }
public int age { get; set; }
public Exam lastExam { get; set; }
}
public class Exam
{
public Exam(int _correct, int _possible)
{
correct = _correct;
possible = _possible;
}
public int correct { get; set; }
public int possible { get; set; }
}
А вот код, чтобы создать беспорядок:
List<List<Student>> lstStudents = new List<List<Student>>();
List<Student> lstAStudents = new List<Student>();
List<Student> lstDuplicateAStudents = new List<Student>();
List<Student> lstBStudents = new List<Student>();
// Create a list of some A students
lstAStudents.Add(new Student("Alex", 14, new Exam(98,100)));
lstAStudents.Add(new Student("Kim", 13, new Exam(96, 100)));
lstAStudents.Add(new Student("Brian", 14, new Exam(92, 100)));
lstStudents.Add(lstAStudents);
// Create a duplicate list of A students
lstDuplicateAStudents.Add(new Student("Alex", 14, new Exam(98, 100)));
lstDuplicateAStudents.Add(new Student("Kim", 13, new Exam(96, 100)));
lstDuplicateAStudents.Add(new Student("Brian", 14, new Exam(92, 100)));
lstStudents.Add(lstDuplicateAStudents);
// Create a list of some B students
lstBStudents.Add(new Student("John", 13, new Exam(88, 100)));
lstBStudents.Add(new Student("Jenny", 13, new Exam(80, 100)));
lstBStudents.Add(new Student("Jamie", 15, new Exam(81, 100)));
lstStudents.Add(lstBStudents);
Использовать метод 'Except' Linq? Создайте 'Set' и верните его в' List' (который удаляет все дубликаты, так как 'Set' не может иметь дубликатов членов)? – Patashu
http://stackoverflow.com/questions/5969702/removing-duplicates-in-a-list-with-linq?rq=1 убедитесь, что вы выбрали правильное поле для создания группы по – BlackICE