# List集合里面去除重复的数据

 　　　　　　 List<string> li1 = new List<string> { "8", "8", "9", "9" ,"0","9"};
List<string> li2 = new List<string> { "张三", "张三", "李四", "张三", "王五", "李四" };
List<string> li3 = new List<string> { "A", "A", "C", "A", "C", "D" };
List<string> li4 = new List<string> { "12", "18", "19", "19", "10", "19" };

HashSet<string> hs = new HashSet<string>(li1); //此时已经去掉重复的数据保存在hashset中

for (int i = 0; i < li2.Count; i++)  //外循环是循环的次数
{
for (int j = li2.Count - 1 ; j > i; j--)  //内循环是 外循环一次比较的次数
{

if (li2[i] == li2[j])
{
li2.RemoveAt(j);
}

}
}

　　　　　 //把相同的用null代替。
for (int i = 0; i < li3.Count; i++)
{
for (int j = 0; j < li3.Count; j++)
{
if (i == j) continue;

if (li3[i] == li3[j])
{
li3[j] = "null";
}

}
}

　　　　    //这方法跟上面的一样，只是变了逻辑
for (int i = 0; i < li4.Count - 1; i++)
{
for (int j = 0; j < li4.Count ; j++)
{
if (i != j)
{
if (li4[i] == li4[j])
{
li4[j] = "null";
}
}
}
}

　　　　　　  Console.WriteLine("li1去除重复后的值为");
hs.ToList().ForEach(item => Console.WriteLine(item));

Console.WriteLine("li2去除重复后的值为");
li2.ForEach(item => Console.WriteLine(item));

Console.WriteLine("li3去除重复后的值为");
li3.ForEach(item => Console.WriteLine(item));

Console.WriteLine("li4去除重复后的值为");
li4.ForEach(item => Console.WriteLine(item));

null我没去掉。用的时候去掉即可。

 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" }
};
}
}
public class Model
{
public int ID { get; set; }
public string Title { get; set; }
}

//定义一个类继承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();

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 + "\t" + item.Title);
}

 List<string> li1 = new List<string> { "8", "8", "9", "8", "0", "9" };
li1 = li1.Distinct().ToList();

• 本文已收录于以下专栏：

## vnc与windows之间的复制粘贴

【原创】VNC怎么和宿主机共享粘贴板 假设目标主机是linux，终端主机是windows（就是在windows上使用VNC登陆linux） 在linux中执行 vncconfig -nowin& 在...

## 完美解决Java中List集合去除重复的JavaBean对象某些属性值方案

• codekxx
• 2016年12月08日 12:05
• 230

## java找出2个集合相同和不同的元素(以及去除List中的重复元素)

java找出2个集合相同和不同的元素(以及去除List中的重复元素)
• high2011
• 2016年01月10日 18:00
• 16943

## java 中 各种集合（List Set Map） 去除重复项

//各种集合（List  Set  Map） 去除重复项import java.text.CollationKey;import java.text.Collator;import java.util...

## 去除list集合中重复项的几种方法

举报原因： 您举报文章：List集合里面去除重复的数据 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)