实例如下:
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace 集合去除重复数据 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { List<Test> list = InitList(); BindData(list); } private void button2_Click(object sender, EventArgs e) { List<Test> list = InitList(); BindData(list); } private void BindData(List<Test> list) { this.lvList.Items.Clear(); foreach (Test item in list) { this.lvList.Items.Add(item.Name); } } private List<Test> InitList() { List<Test> list = new List<Test>(); list.Add(new Test { Name = "张三" }); list.Add(new Test { Name = "张三1" }); list.Add(new Test { Name = "张三2" }); list.Add(new Test { Name = "张三3" }); list.Add(new Test { Name = "张三" }); list.Add(new Test { Name = "张三1" }); return list; } private void button1_Click(object sender, EventArgs e) { Test t = new Test(); List<Test> list = InitList().Distinct(new DistinctTest<Test>()).ToList(); BindData(list); } } class Test { public string Name { get; set; } } class DistinctTest<TModel> : IEqualityComparer<TModel> { public bool Equals(TModel x, TModel y) { //Test Test t = x as Test; Test tt = y as Test; if (t != null && tt != null) return t.Name == tt.Name; return false; } public int GetHashCode(TModel obj) { return obj.ToString().GetHashCode(); } } }
效果如下所示: