博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#数组,List,Dictionary,IQueryable,IEnumerable的相互转换
阅读量:6672 次
发布时间:2019-06-25

本文共 4326 字,大约阅读时间需要 14 分钟。

本篇文章会向大家实例讲述以下内容: 

  • 将数组转换为List
  • 将List转换为数组
  • 将数组转换为Dictionary
  • 将Dictionary 转换为数组
  • 将List转换为Dictionary
  • 将Dictionary转换为List
  • IQueryable,IEnumerable,List相互转换

首先这里定义了一个“Student”的类,它有三个自动实现属性。

class Student     {        public int Id { get; set; }        public string Name { get; set; }        public string Gender { get; set; }    }

将数组转换为List

将数组转换成一个List,我先创建了一个student类型的数组。

static void Main (string[] args)         {            //创建数组            Student[] StudentArray = new Student[3];            //创建创建3个student对象,并赋值给数组的每一个元素            StudentArray[0] = new Student()            {                Id = 203,                Name ="Tony Stark",                Gender ="Male"            };            StudentArray[1] = new Student()            {                Id = 205,                Name="Hulk",                Gender = "Male"            };            StudentArray[2] = new Student()             {                Id = 210,                Name ="Black Widow",                Gender="Female"            };

接下来,使用foreach遍历这个数组。

foreach (Student student in StudentArray) {   Console.WriteLine("Id = "+student.Id+" "+" Name = "+student.Name+"  "+" Gender = "+student.Gender); }

运行程序

接下来将这个数组转换为List,我们添加System.Linq命名空间,然后调用ToList()扩展方法。这里我们就调用StudentArray.ToList()

注意这个ToList方法的返回类型,它返回的是List< Student >对象,这说明我们可以创建一个该类型的对象来保存ToList方法返回的数据。

List
StudentList = StudentArray.ToList
();

使用foreach从StudentList中获取所有的学生资料。

List
StudentList = StudentArray.ToList
();foreach (Student student in StudentList) { Console.WriteLine("Id = "+student.Id+" "+" Name = "+student.Name+" "+" Gender = "+student.Gender); }

运行程序

List转换为数组

将List转换为数组,使用System.Linq命名空间下的ToArray()扩展方法。

Student[] ListToArray = StudentList.ToArray
();

使用foreach遍历学生资料

foreach (Student student in ListToArray){  Console.WriteLine("Id = "+student.Id+" "+" Name = "+student.Name+" "+" Gender = "+student.Gender);}

运行程序

 

将数组转换为Dictionary

将数组转换成Dictionary,使用ToDictionary()扩展方法。这里就可以用StudentArray.ToDictonary(

看这个方法需要的参数,第一个参数需要键和第二个参数需要值。我们知道Dictionary是一个泛型,它是键/值对类型的集合。因此,这里我们用一个lambda表达式传递Dictionary对象名称。

StudentArray.ToDictionary(key => key.Id,Studentobj => Studentobj);

这个ToDictionary方法返回的类型是Dictionary 对象。 其键/值对<int,Student>类型,同样说明我们可以创建一个该类型的对象来存储ToDictionary方法得到的数据。

Dictionary
StudentDictionary = StudentArray.ToDictionary(key => key.Id,Studentobj => Studentobj);

使用foreach从这个StudentDictionary对象遍历学生资料,如下:

foreach (KeyValuePair
student in StudentDictionary){ Console.WriteLine("Id = "+student.Key+" "+" Name = "+student.Value.Name+" "+" Gender = "+student.Value.Gender);}

运行程序

Dictionary转换为数组

将Dictionary转换成数组,使用ToArray扩展方法。在之前,需要获取Dictionary对象的集合中的值,所以我们使用Values属性的ToArray方法。

Student[] DictionaryToArray = StudentDictionary.Values.ToArray();

使用foreach遍历学生资料

foreach (Student student in DictionaryToArray){   Console.WriteLine("Id = "+student.Id+" "+" Name = " +student.Name+" "+" Gender = "+student.Gender);}

运行程序

List转换为Dictionary

之前已经创建了一个StudentList学生对象,将StudentList转换为Dictionary我们调用ToDictionary方法。

Dictionary
ListToDictionary = StudentList.ToDictionary(key => key.Id, value => value);

对于ToDictionary方法的两个参数,我们分别通过键和值传递其对象。这里ToDictionary被赋值,并返回了一个< int,Student >Dictionary 对象。所以我们创建该类型的对象然后存储返回的数据,最后用foreach获取学生资料。

foreach (KeyValuePair
student in ListToDictionary){ Console.WriteLine("Id = "+student.Key+" "+" Name = " +student.Value.Name+" "+" Gender = "+student.Value.Gender);}

运行程序

 

Dictionary转换为List

将Dictionary 转换成List调用ToList方法,之前已经创建了一个StudentDictionary对象。直接看如何这个对象转换到list.

List
DictionaryToList = StudentDictionary.Values.ToList();foreach (Student student in DictionaryToList){ Console.WriteLine("Id = "+student.Id+" "+" Name = "+student.Name+" "+" Gender = "+student.Gender);}

运行程序

 

IQueryable,IEnumerable,List相互转换

IQueryable,IEnumerable都可以通过ToList()转换为类型。

PassUser.ToList();

如果需要反向转换,有两个很好用的方法AsQueryable(),AsEnumerable(),可以顺利将List转换为IQueryable,IEnumerable。

List
ListUser = new List
();PassUser = ListUser.AsQueryable();

 

希望本文对你有帮助

 

********转载:https://www.cnblogs.com/Yesi/p/6229522.html

转载于:https://www.cnblogs.com/linybo/p/10092812.html

你可能感兴趣的文章
查看 docker 容器使用的资源
查看>>
Jedis的配置和优化
查看>>
layui + 阿里巴巴iconfont图标库导入
查看>>
2017总结一
查看>>
MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
查看>>
Power Designer数据库建模工具,正向、逆向工程
查看>>
Libevent学习-02:搭建CentOS下的开发环境
查看>>
yum install 与 yum groupinstall 的区别
查看>>
Go基础系列:读取标准输入(一)
查看>>
PHP协程入门详解
查看>>
Java_Reflect_1
查看>>
HTML中的<table>标签及其子元素标签,JS中DOM对<table>的操作
查看>>
在linux中执行wget命令提示 -bash: wget: command not found 解决方法
查看>>
MobPush推送证书制作
查看>>
springmvc源码解析之配置加载ContextLoadListener
查看>>
网站安全防护工作
查看>>
如何判断一个以太坊地址是不是合约?
查看>>
逆袭!? 期待下一个“BCH”出现
查看>>
opengl es3.0学习篇五:图元装配跟光栅化
查看>>
Qt之添加菜单项&状态栏
查看>>