Linq获得独特的财产

这个问题在这里已经有了答案:

  • LINQ对特定属性的Distinct()17的答案

  • 重写你的GetHashCode()函数:

    public int GetHashCode(MY_DATA_TABLE obj)
    {
        return obj.CODE.GetHashCode();
    }
    

    规则是,Equals和GetHashCode()都应该检查相同的属性,并且只需检查GetHashCode()中的Equals()和whiole对象中的代码,


    另一种选择是如果Version不重要,则在每个组中进行一个组并取其中的第一个值。

    var mapCodes = (from mtc in GetAllData()
                    group mtc by mtc.Code into grp
                    select grp.First()).ToList();
    

    您可以使用MoreLinq的DistinctBy

     var mapCodes = (from mtc in GetAllData()
                     select mtc).DistinctBy(x=>x.Code).ToList();
    

    要不就:

    var mapCodes = GetAllData().DistinctBy(x=>x.Code).ToList();
    

    或者您可以按照注释中所述更正GetHashCode方法

    链接地址: http://www.djcxy.com/p/51293.html

    上一篇: Linq to get distinct property

    下一篇: Lambda Distinct Select