最近在做项目的时候,发现有些需求需要特别的方式来实现。下面看代码

              private List<string> firstType = new List<string>();
private List<string> secondeType = new List<string>();
   private Dictionary<string, List<string>> typeKeyValue = new Dictionary<string, List<string>>(); // 一个键对应一个的得集合
   array = JArray.Parse(jsonType);
for (int i = ; i < array.Count; i++)
{
//type.Add(item.ToString());
string firstTypeStr = array[i].ToString().Split(',')[];
if (!firstType.Contains(firstTypeStr)) //剔除重复数据
{
firstType.Add(firstTypeStr);
}
}
foreach (var item in firstType)
{
secondeType = new List<string>(); //中分类
foreach (var type in array)
{
if (item == type.ToString().Split(',')[])
{
secondeType.Add(type.ToString().Split(',')[]);
}
}
typeKeyValue.Add(item, secondeType);
}

下面是去除现有集合中重复数据的方法

            List<User> users = new List<User>();
users.Add(new User("张三","北京东路"));
users.Add(new User("李四","高新大道"));
users.Add(new User("王五", "中山街"));
users.Add(new User("张三", "北京东路"));
users.Add(new User("李四", "高新大道"));
users.Add(new User("王五", "中山大道")); //Distinct去出集合中的重复数据
List<User> usersList1 = users.Distinct<User>().ToList(); //Lambda表达式去重
List<User> userList2 = users.Where((x,y)=>users.FindIndex(z=>z.Name==x.Name)==y).ToList(); //通过循环的方式去重
List<User> userList3 = new List<User>();
foreach (var item in users)
{
if (userList3.Exists(z=>z.Name==item.Name)==false)
{
userList3.Add(item);
}
} foreach (List<User> item in new object[] { usersList1,userList2,userList3})
{
Console.Write("UserList:\r\n");
foreach (var user in item)
{
Console.WriteLine(user.ToString());
}
}
Console.ReadKey();
}
class User : IEquatable<User>
{
public string Name { set; get; }
private string Address { get; set; }
public User(string name,string address)
{
this.Name = name;
this.Address = address;
}
public override string ToString()
{
return string.Format("name:{0},\taddress{1}", Name, Address);
}
public bool Equals(User other)
{
return this.Name==other.Name;
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
}

在User类中,Equals函数中比较的参数,就是你要通过比较那个参数来去除重复的数据

在上面的示例中如果Name的值相同,Address的值不同,打印出来的是三个数据

而Name不同,Address相同,打印出来的是4条数据

C#取出重复的方式以及用字典存储以键存储集合的方法的更多相关文章

  1. python 在字典中添加键值对的方法。

    list 添加元素的方法是  list.append(a).将 a 添加到 list 里. dict 添加元素的方法是  dict.update(dict2).意为,将 dict2 的内容添加到 di ...

  2. Python字典元素的增加删除和取出字典所有的键和值

    一.增加一个或多个元素 d = {'a': 1} d.update(b=2) #也可以 d.update({‘b’: 2}) print(d) # {'a': 1, 'b': 2} d['e'] = ...

  3. python列表,字典,元组常用方法和集合

    python 目录 一.列表 列表格式 1.添加 列表取数(按照下标取,下标从0开始) 获取长度 append添加(直接添加) extend添加(分别添加) insert()insert(index, ...

  4. python基础3(元祖、字典、深浅copy、集合、文件处理)

    本次内容: 元祖 字典 浅copy和深copy 集合 文件处理 1.1元祖 元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要 ...

  5. python列表推导式详解 列表推导式详解 字典推导式 详解 集合推导式详解 嵌套列表推导式详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,简化代码,速度快等优点.推导式包括:1.列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Pyt ...

  6. Python3列表、元组、字典、集合的方法

    一.列表 温馨提示:对图片点右键——在新标签页中打开图片: 1.count() 定义:统计指定元素在列表中出现的次数并返回这个数.若指定的元素不存在则返回:0. 格式:[列表].count(“指定元素 ...

  7. OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法

    字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...

  8. Python学习第六篇——字典中的键和值

    favorite_language ={ "jen":"python", "sarah":"c", "edwa ...

  9. 27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解

    本章将会介绍 Python 内置的四种常用数据结构:列表(list).元组(tuple).字典(dict)以及集合(set). 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因 ...

随机推荐

  1. 《用Python写爬虫》学习笔记(二)编写第一个网络爬虫

    1.首先,下载网页使用Python的urllib2模块,或者Python HTTP模块request来实现 urllib2会出现问题,解决方法1.重试下载(设置下载次数) 2.设置用户代理 2.其次, ...

  2. 利用Delphi编写Socket通信程序

    一.Delphi与Socket 计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登 ...

  3. 虚拟机如何固定ip并访问外网?!

    Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 /* Style Definitions */ table.MsoNor ...

  4. 1.1 Java并发编程的一些概念

    并发编程的一些概念 同步和异步 同步: 同步方法必须等到方法调用返回后,才能继续后继的行为.也就是说,同步方法执行时,如果没有返回,则后面的方法是执行不到的.同步方法调用,调用过程中可能出现阻塞和等待 ...

  5. ubuntu google chrome 全屏显示命令

    全屏模式:kiosk默认全屏打开一个网页呢,只需要在快捷方式中加上 --kiosk [url] 就可以了.终端命令行打开: google-chrome --kiosk www.baidu.com 参考 ...

  6. ubuntu安装后问题

    ubuntu安装后桌面显示不正常,出现闪屏,或者是缺图标的问题多数是ubuntu的3D加速显示问题 解决方法,vmware workstations 中的菜单栏:虚拟机->设置->显示器- ...

  7. node.js学习二---------------------同步API和异步API的区别

    /** * node.js大部分api都有同步的方法,同步方法名后面都会带有Sync,js编译的时候,同步代码会立即执行,异步代码会先存到异步池中,等同步代码执行完后它才会执行异步:不会阻塞线程,没有 ...

  8. 如何用ESP8266/8285做一个WIFI广告机(虚拟WiFi)

    准备工作 准备一个深圳四博智联科技有限公司的ESP-F 模组.或者四博智联科技的NODEMCU 当我们拿到ESP-F模块后,可以按照以下接线进行测试: 即 VCC.EN 接 3.3v.GPIO15 G ...

  9. μCOS-Ⅲ——临界段

    临界段代码(critical sections),也叫临界区(critical region),是指那些必须完整连续运行,不可被打断的代码段.μC/OS-Ⅲ系统中存在大量临界段代码.采用两种方式对临界 ...

  10. JS中的一元操作符

    表达式 一元操作符 优先级 结合性 运算顺序 表达式是什么? 就是JS 中的一个短语,解释器遇到这个短语以后会把对它进行计算,得到一个结果参与运算,我们把这种要参与到运算中的各种各样的短语称为表达式. ...