-
List<int>
去重
-
List<string>
去重
-
List<T>
去重
1. List<int>
去重
List<int> ilist = new List<int>() { 1, 2, 3, 4, 2, 3 };
ilist = ilist.Distinct().ToList();
foreach (var item in ilist)
{
Console.WriteLine(item);
}
2. List<string>
去重
List<string> strList = new List<string>() { "4", "4", "5", "6", "6" };
strList = strList.Distinct().ToList();
foreach (var item in strList)
{
Console.WriteLine(item);
}
3. List<T>
去重
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
//去重类
public class LambdaComparer<T> : IEqualityComparer<T>
{
private readonly Func<T, T, bool> _lambdaComparer;
private readonly Func<T, int> _lambdaHash;
public LambdaComparer(Func<T, T, bool> lambdaComparer)
: this(lambdaComparer, EqualityComparer<T>.Default.GetHashCode)
{
}
public LambdaComparer(Func<T, T, bool> lambdaComparer, Func<T, int> lambdaHash)
{
if (lambdaComparer == null)
throw new ArgumentNullException("lambdaComparer");
if (lambdaHash == null)
throw new ArgumentNullException("lambdaHash");
_lambdaComparer = lambdaComparer;
_lambdaHash = lambdaHash;
}
public bool Equals(T x, T y)
{
return _lambdaComparer(x, y);
}
public int GetHashCode(T obj)
{
return _lambdaHash(obj);
}
}
//Main方法
List<User> list = new List<User>()
{
new User() { Id = 1, Name = "张三" } ,
new User() { Id = 1, Name = "张三" } ,
new User() { Id = 3, Name = "李四" } ,
};
list = list.Distinct(new LambdaComparer<User>((a, b) => a.Id == b.Id && a.Name == b.Name, obj => obj.ToString().GetHashCode())).ToList();
foreach (var item in list)
{
Console.WriteLine("Id:" + item.Id + ", Name:" + item.Name);
}
C# Distinct去重泛型List