C#之LINQ与XML

LINQ

1. LINQ is a bridge over  object-oriented languages and relational database.

2. 注意查询格式与SQL的不同:

    Customer是一个类,customers是一个list容器,里面的数据是Customer型的。

      IEnumerable<Customer> result =  from customer in customers       where customer.FirstName == "Donna“     select customer;

   from后面是该查询语句的内部变量,where后面接条件,select接内部变量,result是查询结果

   同时需注意result代表的不是当前数据库或数据的查询结果,而是代表这个查询过程,也就是说result后的结果在数据修改前后可能是不同的。

3. 当需要保存查询结果时,可以用 ToList () or the ToArray() 来保存当前查询的结果

   IEnumerable<Customer> result =  from customer in customers       where customer.FirstName == "Donna“     select customer;

   List<Customer> cachedResult = result.ToList<Customer>();

4. 对数据集合的操作:join(取交集), grouping(分组), aggregation(合并), and sorting.

    [data source 1] join [data source 2] on [join condition]

    例如: from customer in customers        join address in addresses           on customer.Name equals address.Name   就是对客户名字与家庭地址相同的数据取交集

     var result = from address in addresses

     group address by address.Name;

     注意分组之后的结果相当于一个二维数组

    而对于排序:from customer in Customers        orderby customer.LastName        select customer 默认为升序

    tips:对于select的变量如果未定义其类型,则可以用var交给编译器去推断。

5. Extension Methods可以简化查询语句,但是有很多限制

    Lambda Expressions in LINQ : IEnumerable<Customer> result = customers.Where( customer =>  customer.FirstName == "Donna“ ) ; 

XML

1. eXtensible Markup Language 的格式

2. 将数据库变为XML文档

该文档是Customers,里面的元素是Customer,每个Customer都有FirstName, LastName, EmailAdress。

3. XML的序列化与反序列化

    XmlSerializer serializer = new XmlSerializer(typeof(Customer));

序列化之后的结果。数据需要序列化以后传输。

而反序列化是将一个接收到的XML转换为本地可处理的文本。

原文地址:https://www.cnblogs.com/GameChina/p/4456055.html