假如有这么一个类
class Items {
public int Age { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
需要提取list中的唯一值,可以使用以下方法
- linq
List<Items> items = new List<Items>() {
new Items{ Age=99,Name="chen",Address="Dalian"},
new Items{ Age=99,Name="chen1",Address="Dalian1"},
new Items{ Age=99,Name="chen2",Address="Dalian2"},
new Items{ Age=99,Name="chen",Address="Dalian"}};
List<Items> i = items.GroupBy(c => new { c.Age, c.Name, c.Address })
.Select(c => c.First()).ToList();
2.重写 Equals 和 GetHashCode 方法
class Items {
public int Age { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public override bool Equals(object obj)
{
if (!(obj is Items))
return false;
Items p = (Items)obj;
return (p.Address == Address && p.Name == Name && p.Age == Age);
}
public override int GetHashCode()
{
return String.Format("{0}|{1}|{2}", Age, Name, Address).GetHashCode();
}
}
此时可以使用distinct了
var i = items.Distinct();