如何判断一个LIST中是否有重复的值?
List<ListClass> lst = new List<ListClass>();
其中ListClass是一个类的实例化对象,这个类包括:
姓名,ID两个属性
如何判断lst中是否存在 姓名重复的值?
[解决办法]
bool b= lst.GroupBy(l=>l.Name).Where(g=>g.Count()>1).Count()>0;
[解决办法]
lst.ToDictionary(o => { return o.name; });
不出异常就没重复
[解决办法]
哈希表解决 。
[解决办法]
using System.Linq;
List<int> list = new List<int>();
list.Add(1);
list.Add(3);
list.Add(5);
list.Add(1);
list.Add(5);
list=list.Distinct().ToList();
foreach (var value in list)
{
Response.Write(value + "<br />");
}
public static class DistinctExtensions
{
public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector)
{
return source.Distinct(new CommonEqualityComparer<T, V>(keySelector));
}
public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector, IEqualityComparer<V> comparer)
{
return source.Distinct(new CommonEqualityComparer<T, V>(keySelector, comparer));
}
}
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));
}
}
//定义
public class Person
{
public int id { set; get; }
public string name { set; get; }
}
调用:
Person pa = new Person();
pa.id = 1;
pa.name = "zxy";
Person pb = new Person();
pb.id = 2;
pb.name = "hjt";
Person pc = new Person();
pc.id = 3;
pc.name = "zxy";
List<Person> list = new List<Person>();
list.Add(pa);
list.Add(pb);
list.Add(pc);
list = list.Distinct(p => p.name, StringComparer.CurrentCultureIgnoreCase).ToList();
foreach (var value in list)
{
Response.Write(value.name + "<br />");
}