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); }

    最终输出第一个,第四个

  • 相关阅读:
    互联网协议入门(一)(转)
    程序员的自我修养——操作系统篇(转)
    程序员的自我修养(2)——计算机网络(转)
    里氏替换原则
    Windows Phone 自学笔记 : ApplicationBar
    如何写好代码
    C# 通过操作注册表控制系统 (更新)
    优秀PPT 设计的十大秘诀
    设计模式学习--面向对象的5条设计原则
    SOLID (面向对象设计) From 维基百科
  • 原文地址:https://www.cnblogs.com/meifeng/p/3482539.html
Copyright © 2011-2022 走看看