zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    *********************************** 愿 你 有 前 进 一 寸 的 勇 气 , 亦 有 后 退 一 尺 的 从 容 。 *********************************** *********************************** 请尊重作者的劳动成果,转载请注明出处。 ***********************************
  • 相关阅读:
    探究Spark算子-RDD
    Spark架构中YarnCluster模式作业流程
    Spark运行架构和组件
    Spark部署模式&端口号&提交作业参数说明
    Spark和Hadoop的联系和区别
    Idea中文件大小配置
    设计模式-之Scala单例模式
    HDFS集群格式化踩过的坑
    安装Spark时遇见的坑
    配置群起zookeeper的脚本所踩过的坑
  • 原文地址:https://www.cnblogs.com/bosins/p/15421524.html
Copyright © 2011-2022 走看看