假設我們有一個「A學生」列表和一個「B學生」列表。然後,我們將這兩個列表添加到更通用的列表中,稱爲「學生」。然後有人決定通過在通用「學生」列表中添加一個「A學生」的重複列表來使我們的生活複雜化。刪除「學生」重複列表中最有效的方法是什麼?請注意,涉及兩個自定義類。C#從包含列表的列表中刪除重複項
代碼中的通用學生列表稱爲lstStudents。這是我想刪除任何重複的列表。
(我試圖拿出一個更好的例子,但是這是我能做的最好的現在。)
我沒有使用LINQ,但它是可用的。 MoreLinq也可以使用。
這裏是我的課:
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);
使用'除'Linq方法?創建一個'Set'並將其轉換回'List'(刪除所有重複項,因爲'Set'不能有重複的成員)? – Patashu 2013-03-27 05:01:47
http://stackoverflow.com/questions/5969702/removing-duplicates-in-a-list-with-linq?rq=1確保你選擇正確的字段做羣組由 – BlackICE 2013-03-27 05:02:49