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

    最终输出第一个,第四个

  • 相关阅读:
    CSUOJ 1525 Algebraic Teamwork
    CSUOJ 1531 Jewelry Exhibition
    CSUOJ 1532 JuQueen
    POJ 2195 Going Home
    hiho week 37 P1 : 二分·二分查找之k小数
    POJ 2186 Popular Cows
    ZOJ 2532 Internship
    RQNOJ PID496/[IOI1999]花店橱窗布置
    POJ 3026 Borg Maze
    laravel框架总结(五) -- 服务提供者(提及契约Contracts)
  • 原文地址:https://www.cnblogs.com/meifeng/p/3482539.html
Copyright © 2011-2022 走看看