1.实体类
public class Student
{
public int Id { get; set; }
public string Head { get; set; }
}
2.数据源
List<Student> list = new List<Student>()
{
new Student
{
Head="11",
Id=1
},
new Student
{
Head="12",
Id=2
},
new Student
{
Head="13",
Id=3
},
new Student
{
Head="14",
Id=4
},
new Student
{
Head="15",
Id=1
},
new Student
{
Head="16",
Id=2
},
};
3.去重
Func<List<Student>, List<Student>> func = null;
list = (func = (List<Student> par) =>
{
var ids = par.GroupBy(t => t.Id).Where(t => t.Count() > 1).Select(t => t.Key).ToList();
if (ids == null || ids.Count < 1)
return par;
ids.ForEach(t =>
{
par.Remove(par.FirstOrDefault(p => p.Id == t));
});
return func(par);
}).Invoke(list);
4.可以直接使用新方法DistinctBy()去重,也可以实现接口IEqualityComparer,重写Equals 和hashCode(可以看看我另外一篇文章通用去重)