如何去掉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); }

最终输出第一个,第四个

原文地址:https://www.cnblogs.com/meifeng/p/3482539.html