因为用到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();

转自:http://www.cnblogs.com/fengri/archive/2013/10/10/3361174.html

List去重的更多相关文章

  1. List<Object> 多条件去重

    上一篇将到根据某一条件去重List<Object> 对象链表.本文章根据多条件去重List<Object>去重 private List<StaingMD0010> ...

  2. Java中list<Object>集合去重实例

    一:Java中list去重的方法很多,下面说一下其中一种方法:把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中: 二:实例 这里需要注意的是:使用c ...

  3. List<object>进行Distinct()去重

    有时我们会对一个list<T>集合里的数据进行去重,C#提供了一个Distinct()方法直接可以点得出来.如果list<T>中的T是个自定义对象时直接对集合Distinct是 ...

  4. java8 把List<Object> 根据某字段去重

      import java.util.ArrayList;import java.util.List;import org.apache.shiro.SecurityUtils;import org. ...

  5. [Hadoop]-从数据去重认识MapReduce

    这学期刚好开了一门大数据的课,就是完完全全简简单单的介绍的那种,然后就接触到这里面最被人熟知的Hadoop了.看了官网的教程[吐槽一下,果然英语还是很重要!],嗯啊,一知半解地搭建了本地和伪分布式的, ...

  6. js 查找树节点 数组去重

    //查找树节点function findData(curOrg, id) { var array = []; if ((typeof curOrg == 'object') && (c ...

  7. js数组去重的4种方法

    js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...

  8. java中List对象列表去重或取出以及排序

    面试碰到几次list的去重和排序.下面介绍一种做法: 1. list去重 1.1 实体类Student List<Student>容量10k以上,要求去重复.这里Student的重复标准是 ...

  9. js 数组去重(7种)

    第一次写技术博客,之前总是认为写这些会很浪费时间,还不如多看几篇技术博文.但...但昨天不知道受了什么刺激,好像有什么在驱使着自己要写一样,所以才有了今天的第一篇博文.总觉得应该要坚持这样写下去.初次 ...

  10. JavaScript-数组去重由慢到快由繁到简

    indexOf去重 Array.prototype.unique1 = function() { var arr = []; for (var i = 0; i < this.length; i ...

随机推荐

  1. 介绍一款基于jquery好用的编辑框htmlbox.full.js

    1. 可选择背景颜色,自主选择工具,感觉挺好用的,不过需要注意,添加引用后找不到工具图标的图片,找到脚本修改idir:属性改成自己的图片文件夹存放路径即可. asp.net mvc3提交内容报错提示含 ...

  2. Express安装入门与模版引擎ejs

    Express安装入门与模版引擎ejs 目录 前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set ...

  3. 一个简单的Garbage Collector的实现

    一个简单的Garbage Collector的实现 前言: 最近看了google的工程师写的一个非常简单的垃圾收集器,大概200多行C代码,感叹大牛总能够把复杂的东西通过很简单的语言和代码表达出来.为 ...

  4. rebbitmq-RPC(C#)

    RPC(Remote Procedure Call Protocol)——远程过程调用协议 运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步: 1.调用客户端句柄:执行传送参数 2.调 ...

  5. Spectral Clustering

    谱聚类算法(Spectral Clustering)优化与扩展   谱聚类(Spectral Clustering, SC)在前面的博文中已经详述,是一种基于图论的聚类方法,简单形象且理论基础充分,在 ...

  6. python实现变参

    使用赋值表达式传递参数,可以颠倒参数列表的顺序.函数的参数提供默认参数 参数可以是变量,也可以是元祖.列表等内置的数据结构 在程序开发中,常常需要传递可变长度的参数.在函数的参数前使用标识符“*”可以 ...

  7. ASP.NET MVC实现剪切板功能

    前言 关于复制粘贴的功能,好像不用劳师动众的写后端代码,JS就可以,但正如大家所知道的,兼容性问题,当然这么通用的功能怎么可能没有一个通用的方案呢,于是便找到了一款jquery插件 jquery.cl ...

  8. mysql 和 mongo db 语法对比

    本文描述了MySQL中的常用SQL语句在MongoDB中的写法,如果你长期使用MySQL而对MongoDB跃跃欲试,这篇简单的文章可以帮助你更快的进入角色.查询:MySQL:SELECT * FROM ...

  9. MySql主从配置实践及其优势浅谈

    MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...

  10. Redis系统学习 五、管理

    在最后一章里,我们将集中谈论Redis运行中的一些管理方面内容.这是一个不完整的Redis管理指南,我们将会回答一些基本的问题,初接触Redis的新用户可能会很感兴趣. 配置(Configuratio ...