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); }
最终输出第一个,第四个