使用LINQ进行数据转换剖析

开发 后端
这里介绍使用LINQ进行数据转换,语言集成查询 (LINQ) 不仅可用于检索数据,而是还是一个功能强大的数据转换工具。

在向大家详细介绍使用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<int> 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<Student> students = new List<Student>()  
  7. {  
  8. new Student {First="Svetlana",  
  9. Last="Omelchenko",   
  10. ID=111,   
  11. Street="123 Main Street",  
  12. City="Seattle",  
  13. Scoresnew List<int> {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<int> {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<int> {88, 94, 65, 91}},  
  26. };  
  27.  
  28. // Create the second data source.  
  29. List<Teacher> teachers = new List<Teacher>()  
  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重要组成部分简介
责任编辑:佚名 来源: IT168
相关推荐

2009-09-09 16:21:31

Linq使用sqlme

2009-09-08 15:39:13

Linq使用Inser

2017-10-31 11:55:46

sklearn数据挖掘自动化

2022-11-02 14:45:24

Python数据分析工具

2009-03-16 10:29:45

数据挖掘过滤器Access

2019-09-30 10:12:21

机器学习数据映射

2009-09-09 14:40:43

Linq to sql

2009-09-14 10:13:02

LINQ查询操作

2009-09-14 15:12:40

LINQ to XML

2017-02-16 08:41:09

数据Vlookup匹配

2009-09-17 13:15:20

LINQ查询

2009-09-10 14:37:57

LINQ匿名类型

2009-09-16 16:59:05

LINQ to XML

2022-03-28 14:08:02

Python数据清洗数据集

2009-09-16 09:56:42

LINQ to SQL

2009-09-17 09:20:34

Linq和dLinq区

2009-09-08 16:20:12

LINQ to SQL

2009-09-18 17:17:58

LINQ模型

2009-09-15 14:52:15

linq级联删除

2023-08-15 16:20:42

Pandas数据分析
点赞
收藏

51CTO技术栈公众号