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

最新文章

  1. JAAS 是个什么梗
  2. ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API
  3. linux 安装 nginx 及反向代理配置
  4. CSS基础知识汇总
  5. Ceph Zabbix plugin 插件和模板
  6. map的用法
  7. 《算法设计手册》面试题解答 第五章:图的遍历 附:DFS应用之找挂接点
  8. C++ 虚函数详解
  9. [Swust OJ 801]--Ordered Fractions
  10. Struts2利用注解实现action跳转
  11. Spark 键值对RDD操作
  12. OpenStack命令 创建网络和路由管理
  13. 实现LAMP
  14. 为什么MOBA、“吃鸡”游戏不推荐用tcp协议——实测数据
  15. 对Datatable中过长内容实行省略话
  16. jq里验证插件的自定义方法Jquery.validator.addMethod()示例
  17. mininet下建立拓扑时关于远程控制器的一个小问题
  18. C#读取文件夹下所有指定类型,并返回相应类型数据
  19. 写vue项目时候 零星的笔记
  20. P2704 [NOI2001]炮兵阵地

热门文章

  1. MySql处理数据库和表
  2. 开源文档管理系统LogicalDOC测试报告---安装篇
  3. validate的使用
  4. memcached与.NET的融合使用2
  5. 网络地址到物理地址的映射(ARP)
  6. Xcode中如何集成Unity
  7. DOM事件简介
  8. poj1183 反正切函数的应用(水)
  9. [转]iOS Assembly Tutorial: Understanding ARM
  10. 在html中使用javascript显示本地图片的