初始提交
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Hncore.Infrastructure.EntitiesExtension
|
||||
{
|
||||
public class CommonEqualityComparer<T, V> : IEqualityComparer<T>
|
||||
{
|
||||
private Func<T, V> keySelector;
|
||||
private IEqualityComparer<V> comparer;
|
||||
|
||||
public CommonEqualityComparer(Func<T, V> keySelector, IEqualityComparer<V> comparer)
|
||||
{
|
||||
this.keySelector = keySelector;
|
||||
this.comparer = comparer;
|
||||
}
|
||||
|
||||
public CommonEqualityComparer(Func<T, V> keySelector)
|
||||
: this(keySelector, EqualityComparer<V>.Default)
|
||||
{ }
|
||||
|
||||
public bool Equals(T x, T y)
|
||||
{
|
||||
return comparer.Equals(keySelector(x), keySelector(y));
|
||||
}
|
||||
|
||||
public int GetHashCode(T obj)
|
||||
{
|
||||
return comparer.GetHashCode(keySelector(obj));
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 扩展类
|
||||
/// </summary>
|
||||
public static class DistinctExtensions
|
||||
{
|
||||
public static IEnumerable<T> Distinctx<T, V>(this IEnumerable<T> source, Func<T, V> keySelector)
|
||||
{
|
||||
return source.Distinct(new CommonEqualityComparer<T, V>(keySelector));
|
||||
}
|
||||
|
||||
public static IEnumerable<T> Distinctx<T, V>(this IEnumerable<T> source, Func<T, V> keySelector, IEqualityComparer<V> comparer)
|
||||
{
|
||||
return source.Distinct(new CommonEqualityComparer<T, V>(keySelector, comparer));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user