因为用到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我没去掉。用的时候去掉即可。

当然。还有许多办法。比如linq  Distinct  等等都可以,看看网上的这个例子:去掉modelList中title重复的内容,不区分大小写

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

解决方案一:这里比较的前提是对象的哈希代码相等。否则不会比较,因为哈希代码不相等。两个对象显然不相等

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

C# 去掉List重复元素的方法的更多相关文章

  1. python去除列表中重复元素的方法

    列表中元素位置的索引用的是L.index 本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参考.具体如下: 比较容易记忆的是用内置的set 1 2 3 l1 = ['b','c', ...

  2. JS判断数组中是否有重复元素的方法

    判断数组中是否有重复元素,最容易想到的方法是使用2重循环,逐个遍历,比较,但是这个是最慢,最笨的方法,百度得出了更好的方法. var ary = new Array("111",& ...

  3. js判断数组里是否有重复元素的方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/longzhoufeng/article/details/78840974 第一种方法:但是下面的这种 ...

  4. java去除数组重复元素的方法

    转载自:https://blog.csdn.net/Solar24/article/details/78672500 import java.util.ArrayList; import java.u ...

  5. ArrayList中重复元素处理方法.[Java]

    1.使用HashSet删除ArrayList中重复的元素 private static void sortByHashSet() { ArrayList<String> listWithD ...

  6. 【C++】去除vector里重复元素的方法比较

    背景:构造一个无重复的白名单,之后要在里面进行二分查找.故要求名单有序,且无重复,并且要进行二分查找,所以要采用有:随机访问迭代器类型的容器.这类容器有vector,array,deque.显然要ve ...

  7. js-一种去掉数组中重复元素的方法

    思路来源于某个同学的博客 function norepeat(arr){ return arr.filter(function(val,index,array) { return array.inde ...

  8. Python-删除列表中重复元素的方法

    1.set()方法 x = [1,2,3,4,5,1] y = list(set(x)) print(y) ``` [1, 2, 3, 4, 5] ``` 2. x = ['b','c','d','b ...

  9. JS 去除重复元素的方法

    Array.prototype.del = function () { var a = {}, c = [], l = this.length; ; i < l; i++) { var b = ...

随机推荐

  1. [我的试题]Test of String

    1.前言 这是我出的第一套题目,话说感觉有点晚了,还是在向总安排下出的.我被安排的是字符串方面的内容,这应该相对而言是比较小众的知识点吧,但是一样的有作用的,也有很神的题目.所谓是NOIP模拟题,其实 ...

  2. POJ 2251 题解

    Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27520   Accepted: 10776 ...

  3. Tornado学习笔记12 tornado.httpserver-.非阻塞的Http服务器

    是一个非阻塞的,单线程的Http 服务器. 一般地,应用程序很少与HttpServer类直接交互,除非在进程开始时启动服务时(甚至在使用tornado.web.Applicaiton.listen时也 ...

  4. 利用OTP为odoo增强安全访问

    两次验证是广泛应用于各大站点的验证机制,我们今天利用Google Authentication来实现Odoo的两次验证,防止撞库或密码泄露等引起的安全问题. 1. 二次验证的原理 参见 http:// ...

  5. 规范和封装jdbc程序代码

    JDBC 部分方法引用工具类 package it.cast.jdbc; import java.sql.Connection; import java.sql.DriverManager; impo ...

  6. 【emWin】例程一:emWin系列教程简介

    实验指导书及代码包下载: http://pan.baidu.com/s/1bpKbPBx

  7. Linux Vsftpd 连接超时解决方法(被动模式)

    http://blog.csdn.net/qq_15766181/article/details/46554643 使用 FileZilla FTP Client 连接 Vsftpd FTP,在没有配 ...

  8. python学习道路(day8note)(抽象类,类的方法,异常处理,socket编程)

    1.#面向对象 #抽象接口 === 抽象类 #就是架构师给你一个架子,你们去写,如果满足不了直接报错 #python2 print("python2---抽象类".center(2 ...

  9. 【转】C#中将JSon数据转换成实体类,将实体类转换成Json

    http://wo13145219.iteye.com/blog/2022667 http://json2csharp.chahuo.com/ using System; using System.C ...

  10. VC中对文件的读写

    http://www.cnblogs.com/LJWJL/archive/2012/10/06/2712466.html 注意: 1.由于C是缓冲写 所以要在关闭或刷新后才能看到文件内容 2.电脑处理 ...