zoukankan      html  css  js  c++  java
  • 如何去掉List中的重复内容

     

        class Program     {      
    static void Main(string[] args) {
    List<Model> modelList = new List<Model>() {
    new Model(){ ID=1,Title="abcde"},
    new Model(){ ID=2,Title="ABCDE"},
    new Model(){ ID=3,Title="AbcdE"},
    new Model(){ ID=4,Title="A"},
    new Model(){ ID=5,Title="a"}
    };
    Console.Read(); } }
    public class Model {
    public int ID { get; set; }
    public string Title { get; set; }
    }

    现在要去掉modelList中title重复的内容,不区分大小写,请教高效的方法。

     
    最佳答案

    我也来一种方法:

    先定义一个类继承IEqualityComparer接口,如下

    public class ModelComparer : IEqualityComparer<Model>     {  
    public bool Equals(Model x, Model y) {
    return x.Title.ToUpper() == y.Title.ToUpper(); }
    public int GetHashCode(Model obj) {
    return obj.Title.ToUpper().GetHashCode(); } }

    在使用的时候一句话就够了

     modelList = modelList.Distinct(new ModelComparer()).ToList();
            
    其他回答(4)        
    0                    

    这里提供一种方法:

    List<Model> modelList = new List<Model>() {   
    new Model(){ ID=1,Title="abcde"},
    new Model(){ ID=2,Title="ABCDE"},
    new Model(){ ID=3,Title="AbcdE"},
    new Model(){ ID=4,Title="A"},
    new Model(){ ID=5,Title="a"} };
    var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m=>new{
    ID=m.FirstOrDefault().ID });
    modelList = modelList.Where(m => title.Select(mo => mo.ID).Contains(m.ID)).ToList();
    foreach (var item in modelList) { Console.WriteLine(item.ID + " " + item.Title); }

    最终输出第一个,第四个

  • 相关阅读:
    Python Try Except
    Python 爬虫常用模块
    numpy中的数学
    机器学习名词
    numpy 矩阵变换transpose和swapaxes
    【Spark-core学习之四】 Spark任务提交
    【Spark-core学习之三】 Spark集群搭建 & spark-shell & Master HA
    【Spark-core学习之二】 RDD和算子
    【Spark-core学习之一】 Spark初识
    【Scala学习之二】 Scala 集合 Trait Actor
  • 原文地址:https://www.cnblogs.com/meifeng/p/3482539.html
Copyright © 2011-2022 走看看