• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#List根据对象属性去重的四种方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理了C#中给List根据对象属性去重的四种方法。

方法一:循环遍历List,借助Dictionary存储去重的对象。

Dictionary<string, Item> result = new Dictionary<string, Item>();
foreach (Item item in list)//list为待去重列表
{
    Item temp;
    if (!result.TryGetValue(item.name, out temp))
    {
        result.Add(item.name, item);
    }
}
List<Item> result_list = result.Values.ToList();

方法二:利用ToLookup查找,并转为Dictionary

List<Item> result = list.ToLookup(item => item.name).ToDictionary(item => item.Key, item => item.First()).Values.ToList();

方法三:自定义Compare方法实现

List<Item> result = list.Distinct(new Compare()).ToList();

方法四:利用GroupBy分组实现

List<Item> result = list.GroupBy(item => item.name).Select(item => item.First()).ToList();

其中,对象Item类如下:

public class Item
{
    public string name { get; set; }
    public string value { get; set; }
}

Compare方法如下:

public class Compare : IEqualityComparer<Item>
{
    public bool Equals(Item a, Item b)
    {
        return a.name == b.name;
    }

    public int GetHashCode(Item obj)
    {
        return obj.name.GetHashCode();
    }
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#给多线程传参的三种方式发布时间:2022-07-13
下一篇:
C#得到CPU的序列号、硬盘序列号、网卡序列号发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap