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


    本文整理了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();
        }
    }
    *********************************** 愿 你 有 前 进 一 寸 的 勇 气 , 亦 有 后 退 一 尺 的 从 容 。 *********************************** *********************************** 请尊重作者的劳动成果,转载请注明出处。 ***********************************
  • 相关阅读:
    网速成为了工作的瓶颈之一
    项目实施(一)
    一个命运曲折的项目进行曲
    一次小系统的快速开发经历
    项目实施(二)
    进销存系统的成本核算方法一览
    比较2个DataTable中的内容是否相同的方法
    正则表达式 集会
    Url地址重写,利用HttpHander手工编译页面并按需生成静态HTML文件
    定时执行sql存储过程
  • 原文地址:https://www.cnblogs.com/bosins/p/15421524.html
Copyright © 2020-2023  润新知