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(可以看看我另外一篇文章通用去重)
本文介绍了一种在C#中对包含重复项的Student实体类列表进行去重的方法。首先通过GroupBy和Where筛选出重复ID的项,然后逐个移除这些重复项,直至列表中不再存在重复。此外,还提到了可以采用更简洁的DistinctBy方法来实现同样的功能。
3710

被折叠的 条评论
为什么被折叠?



