C#.NET: List<Source>转Dictionary<Source.Key,List<Source>>【C#.Net教程】,C#.NET,Dictionary,Source
作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:27评论:0
导读:C#.NET应用ToDictionary(),GroupBy(),能够将List转化为Dictionary,主须要一行代码!起首看一下需求,已知cars,即是:...
C#.NET 应用ToDictionary(),GroupBy(),能够将List转化为Dictionary,主须要一行代码!
起首看一下需求,已知cars,即是:
List<Car> cars = new List<Car>(){ new Car(1,"audiA6","private"), new Car(2,"futon","merchant"), new Car(3,"feiren","bike"), new Car(4,"bukon","private"), new Car(5,"baoma","private"), new Car(6,"dayun","merchant") };
1)我想以id为键,值为Car转化为一个字典idCarDict,要领以下:
var idCarDict = cars.ToDictionary(car=>car.id);
如许保证能准确转化的条件为,id在列表中没有反复值。如果有反复的,会抛出向字典中增加反复值的非常。
2)我想以type为键,值car的List的typeDict,要领以下:
Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
分步诠释:
第一步分组
cars.GroupBy(car=>car.type) //返回的效果范例为: //IEnumerable<IGroup<string,car>>; //个中string即是car.type,也就是分组的键
第二步将IEnumerable范例转化为字典,拔取适宜的键,
ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key就是car.type;//r.ToList()操纵后将分组对象转化为List对象
这类转化代码简介,比以下foreach遍历获得以car.type的字典简约很多:
var dict = new Dictionary<string,List<Car>>(); foreach(var car in cars) { if(dict.Contains(car.type)) dict[car.type].Add(car); else dict.Add(car.type,new List<Car>(){car}));}
C#.NET 应用ToDictionary(),GroupBy(),能够将List转化为Dictionary,主须要一行代码!
起首看一下需求,已知cars,即是:
List<Car> cars = new List<Car>(){ new Car(1,"audiA6","private"), new Car(2,"futon","merchant"), new Car(3,"feiren","bike"), new Car(4,"bukon","private"), new Car(5,"baoma","private"), new Car(6,"dayun","merchant") };
1)我想以id为键,值为Car转化为一个字典idCarDict,要领以下:
var idCarDict = cars.ToDictionary(car=>car.id);
如许保证能准确转化的条件为,id在列表中没有反复值。如果有反复的,会抛出向字典中增加反复值的非常。
2)我想以type为键,值car的List的typeDict,要领以下:
Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
分步诠释:
第一步分组
cars.GroupBy(car=>car.type) //返回的效果范例为: //IEnumerable<IGroup<string,car>>; //个中string即是car.type,也就是分组的键
第二步将IEnumerable范例转化为字典,拔取适宜的键,
ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key就是car.type;//r.ToList()操纵后将分组对象转化为List对象
这类转化代码简介,比以下foreach遍历获得以car.type的字典简约很多:
var dict = new Dictionary<string,List<Car>>(); foreach(var car in cars) { if(dict.Contains(car.type)) dict[car.type].Add(car); else dict.Add(car.type,new List<Car>(){car})); }
相关推荐
- 简朴引见C#中数组、ArrayList、List、Dictionary的用法与区分【C#.Net教程】,C#,数组,Dictionary
- C#中关于Dictionary的用法详解【C#.Net教程】,Dictionary,csharp,.net
- 关于C#中字典Dictionary的递次及倒序详解【C#.Net教程】,C#,Dictionary,顺序及倒序
- Dictionary字典类在C#中的示例代码引见【C#.Net教程】,Dictionary,字典类,C#
- 运用.NET举行互联网开辟的思索和探究【C#.Net教程】,C#.NET,互联网开发
- 简朴引见C#.NET、JavaScript和JSON(图文)【C#.Net教程】,C#.NET,JavaScript,JSON
- 浅谈C# 之 Hashtable 与 Dictionary的代码实例【C#.Net教程】,Hashtable ,C#,Dictionary
你 发表评论:
欢迎- .Net教程排行
-
- 1案例分享c++ map的运用和 查找机能测试【C#.Net教程】,性能,map,c++
- 2c#怎样运用?c#的基础语法【C#.Net教程】,c#,关键字
- 3细致引见C# string花样的日期时候字符串转为DateTime范例的要领【C#.Net教程】,C#,string,DateTime
- 4详解ASP.NET中衔接数据库设置要领【C#.Net教程】,ASP.NET,数据库,配置
- 5C# DataSet机能最好实践【C#.Net教程】,C#,DataSet
- 6.net和c#有什么区别【C#.Net教程】,.net,c#
- 7C#_挪用封装的一个类完成导出Excel表格的功用【C#.Net教程】,C# Excel表格
- 8asp .net 面试题及答案分享【C#.Net教程】,.net,自己,整理,问题,面试
- 9让WebAPI 返回JSON花样的数据实例教程【C#.Net教程】,javascript,WebAPI,JSON,api,web,搭建,返回
- 最新文章
- 广而告之