码迷,mamicode.com
首页 > Windows程序 > 详细

C#之LINQ与XML

时间:2015-04-25 17:57:12      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

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转换为本地可处理的文本。

C#之LINQ与XML

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!