首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么判断一个LIST中是否有重复的值

2013-06-26 
如何判断一个LIST中是否有重复的值? ListListClass lst new ListListClass()其中ListClass是一个类

如何判断一个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 />");
                }

热点排行