• Linq查询中distinct 查询的局限性问题
  • Cathy 发表于 2016/3/28 12:58:00 | 分类标签: Linq查询 distinct过滤
  • 问题引出:在实际中遇到一个问题,要进行集合去重,集合内存储的是引用类型,需要根据id进行去重。这个时候linq 的distinct 就不够用了,对于引用类型,它直接比较地址。测试数据如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Person
    {
        public int ID { getset; }
        public string Name { getset; }
    }
    List<Person> list = new List<Person>()
    {
         new Person(){ID=1,Name="name1"},
         new Person(){ID=1,Name="name1"},
         new Person(){ID=2,Name="name2"},
         new Person(){ID=3,Name="name3"}               
    };

    我们需要根据Person 的 ID 进行去重。当然使用linq Distinct 不满足,还是有办法实现的,通过GroupBy先分一下组,再取第一个数据即可。例如:

    1