使用 LINQ 进行数据转换

使用 LINQ 进行数据转换

语言集成查询 (LINQ) 不仅可用于检索数据,而是还是一个功能强大的数据转换工具。通过使用 LINQ 查询,您可以将源序列用作输入,并采用多种方式修改它以创建新输出序列。您可以通过排序和分组来修改序列本身,而不必修改元素本身。但是,LINQ 查询最强大的功能可能在于它能够创建新类型。这一功能在 select 子句中实现。例如,可以执行下列任务:

  • 将多个输入序列合并到具有新类型的单个输出序列中。
  • 创建其元素只包含源序列中的各个元素的一个或几个属性的输出序列。
  • 创建其元素包含对源数据执行的操作结果的输出序列。
  • 创建不同格式的输出序列。例如,您可以将 SQL 行或文本文件的数据转换为 XML。

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

将多个输入联接到一个输出序列

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

class Student
{
public string First { get; set; }
public string Last {get; set;}
public int ID { get; set; }
public string Street { get; set; }
public string City { get; set; }
public List<int> Scores;
}

class Teacher
{
public string First { get; set; }
public string Last { get; set; }
public int ID { get; set; }
public string City { get; set; }
}

选择各个源元素的子集

选择源序列中的各个元素的子集有两种主要方法:

1、若要只选择源元素的一个成员,请使用点运算。在下面的示例中,假定 Customer 对象包含几个公共属性,其中包括名为 City 的字符串。在执行此查询时,此查询将生成字符串输出序列。

var query = from cust in Customers
select cust.City;

it知识库使用 LINQ 进行数据转换,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。