使用LINQ进行数据转换剖析
创始人
2024-06-06 12:41:11
0

在向大家详细介绍使用LINQ进行数据转换之前,首先让大家了解下使用LINQ查询,然后全面介绍使用LINQ进行数据转换。

使用LINQ进行数据转换

语言集成查询 (LINQ) 不仅可用于检索数据,而是还是一个功能强大的数据转换工具。通过使用LINQ查询,您可以将源序列用作输入,并采用多种方式修改它以创建新输出序列。您可以通过排序和分组来修改序列本身,而不必修改元素本身。但是,LINQ 查询最强大的功能可能在于它能够创建新类型。这一功能在 select 子句中实现。例如,可以执行下列任务:
◆将多个输入序列合并到具有新类型的单个输出序列中。
◆创建其元素只包含源序列中的各个元素的一个或几个属性的输出序列。
◆创建其元素包含对源数据执行的操作结果的输出序列。
◆创建不同格式的输出序列。例如,您可以将 SQL 行或文本文件的数据转换为 XML。

这只是几个示例。当然,可以采用多种方式将这些转换组合在同一查询中。另外,一个查询的输出序列可用作新查询的输入序列。
将多个输入联接到一个输出序列

可以使用LINQ查询来创建包含多个输入序列的元素的输出序列。下面的示例演示如何组合两个内存中的数据结构,但组合来自 XML 或 SQL 或数据集源的数据时可应用相同的原则。假定下面两种类类型:

  1. class Student  
  2. {  
  3. public string First { get; set; }  
  4. public string Last {get; set;}  
  5. public int ID { get; set; }  
  6. public string Street { get; set; }  
  7. public string City { get; set; }  
  8. public List Scores;  
  9. }  
  10.  
  11. class Teacher  
  12. {  
  13. public string First { get; set; }  
  14. public string Last { get; set; }  
  15. public int ID { get; set; }   
  16. public string City { get; set; }  

下面的示例演示该查询:

  1. class DataTransformations  
  2. {  
  3. static void Main()  
  4. {  
  5. // Create the first data source.  
  6. List students = new List()  
  7. {  
  8. new Student {First="Svetlana",  
  9. Last="Omelchenko",   
  10. ID=111,   
  11. Street="123 Main Street",  
  12. City="Seattle",  
  13. Scoresnew List {97, 92, 81, 60}},  
  14. new Student {First="Claire",  
  15. Last="O’Donnell",   
  16. ID=112,  
  17. Street="124 Main Street",  
  18. City="Redmond",  
  19. Scoresnew List {75, 84, 91, 39}},  
  20. new Student {First="Sven",  
  21. Last="Mortensen",  
  22. ID=113,  
  23. Street="125 Main Street",  
  24. City="Lake City",  
  25. Scoresnew List {88, 94, 65, 91}},  
  26. };  
  27.  
  28. // Create the second data source.  
  29. List teachers = new List()  
  30. {  
  31. new Teacher {First="Ann"Last="Beebe"ID=945City = "Seattle"},  
  32. new Teacher {First="Alex"Last="Robinson"ID=956City = "Redmond"},  
  33. new Teacher {First="Michiyo"Last="Sato"ID=972City = "Tacoma"}  
  34. };  
  35.  
  36. // Create the query.  
  37. var peopleInSeattle = (from student in students  
  38. where student.City == "Seattle"  
  39. select student.Last)  
  40. .Concat(from teacher in teachers  
  41. where teacher.City == "Seattle"  
  42. select teacher.Last);  
  43.  
  44. Console.WriteLine("The following students and teachers live in Seattle:");  
  45. // Execute the query.  
  46. foreach (var person in peopleInSeattle)  
  47. {  
  48. Console.WriteLine(person);  
  49. }  
  50.  
  51. Console.WriteLine("Press any key to exit.");  
  52. Console.ReadKey();  
  53. }  

以上介绍使用LINQ进行数据转换

【编辑推荐】

  1. LINQ查询操作经验总结
  2. LINQ遍历多个数组深入剖析
  3. Linq查询Access数据文件浅谈
  4. LINQ构建框架设计学习笔记
  5. LINQ重要组成部分简介

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...