首页 > 下载 > 下载详文:.NET的LINQ原理即是Web3.0数据

.NET的LINQ原理即是Web3.0数据

发布时间:2012年04月21日 10时48分02秒   属性:程序Web开发 > Microsoft    访问次数:118637
字体: 初始 添加收藏 分享给好友

.NET的LINQ原理即是Web3.0的数据开发

LINQ是在.NET Framework 3.5中加入进来的新功能,在.NET Framework 2.0的泛型System.Collections.Generic中演进发展出来的。在System.Linq中可以看到它的源码必须引用项有using System.Collections;using System.Collections.Generic;using System.Runtime;using System.Runtime.CompilerServices;,从这里可以看到LiNQ数据序列化基础就是通过System.Collections.Generic来完成的。即就是泛型数据的基础上演进的。

在.NET Framework 2.0中开发对List<T>的使用就已经可以了解到其原理。List泛型将数据库的数据表装载到泛型类成员中包装在List序列中提供给客户端访问读取。在得益于泛型数据的装载再通过webservice,才使得服务端数据库的数据可以跨平台、跨开发语言传送到各种环境下提供数据服务。这正是Web3.0的数据开发,把同一个程序的数据授权给各种平台桌面应用、web应用、手机应用、电视机上的应用。Web3.0里面的个人拥有数据,每个人都有自己的数据不需要自己搭建任何网络服务器程序即可拥有,这就是网络与网络之间的数据授权,即网站或个人没有服务端数据库也可以有自己的数据。

LINQ示例

在Visual studio中建立一个ASP.NET网站项目选取.NET Framework  4.0,然后建立Customer.cs类,在类中建立定义public int ID { get; set; } public string Name { get; set; }属性。接着在Page_Load中用List泛型将Customer载入实际数据。然后用LINQ查询筛选数据。下面是Page_Load详细代码。

C# 代码  复制
protected void Page_Load(object sender, EventArgs e) { List<Customer> customers = new List<Customer>() { new Customer(){ ID=1, Name="Jose"}, new Customer(){ ID=2,Name="Zr."}, new Customer(){ ID=3,Name="Liu"}, new Customer(){ ID=4,Name="王某"} }; //直接将筛选 name为"Zr."筛选出来 foreach (Customer c in customers) { if (c.Name == "Zr.") { //Response.Write("<br/>"); Response.Write("ID:" + c.ID + ",Name:" + c.Name); Response.Write("<br/>"); } } //LINQ 将 Custmoer name为"Zr."筛选出来 var Cust = from customer in customers where customer.Name == "Zr." select customer; //将Cust结果循环出来 Customer c foreach (Customer c in Cust) { Response.Write("ID:" + c.ID + ",Name:" + c.Name); } //将Cust结果循环出来 var c 相当于 Customer c foreach (var c in Cust) { Response.Write("<br/>"); Response.Write("ID:" + c.ID + ",Name:" + c.Name); } GridView1.DataSource = Cust; GridView1.DataBind(); }

代码页面输出效果

下面把上面的LINQ查询筛选方法用在Webservice里面,建立一个Webservice程序,然后定义 public List<Customer> CustomerList()方法,在方法里面用LINQ查询筛选数据然后将返回LINQ的结果,LINQ支持直接将查询结果转换成List泛型数据ToList()即可,原理在文章开始也说了System.Linq里面已经包含了System.Collections.Generic泛型子集。

C# 代码  复制
[WebMethod] public List<Customer> CustomerList(string name) { List<Customer> customers = new List<Customer> { new Customer(){ Id=1, Name="Jose"}, new Customer(){ Id=2, Name="Zr."}, new Customer(){ Id=3, Name="Liu"}, new Customer(){ Id=4, Name="王某"} }; var Cust = from customer in customers where customer.Name == name select customer; return Cust.ToList(); }

下面是WebserviceList<Customer> CustomerList()的执行显示结果


LINQ合并数据

进一步深入,现在再建立一个Order类,在Order类中建立public int ID { get; set; } public string Product { get; set; }两个成员属性。将原来的Customer类中再加入一个public string orderProduct { get; set; }属性。两个类的说明,Customer类即是客户列表,ID为客户ID,Name为客户名,orderProduct为客户订单产品;Order类为客户ID,Product为产品名。在这里要完成客户Customer在Order中订单的产品关联。下面是Webservcie中定义的public List<Customer> CustomerByOrderList()方法。

C# 代码  复制
[WebMethod] public List<Customer> CustomerByOrderList() { List<Customer> customers = new List<Customer> { new Customer(){ Id=1, Name="Jose"}, new Customer(){ Id=2, Name="Zr."}, new Customer(){ Id=3, Name="Liu"}, new Customer(){ Id=4, Name="王某"} }; List<Order> orders = new List<Order>{ new Order(){ ID=1,Product="MP3 Player"}, new Order(){ ID=2, Product="MP4 Player"}, new Order(){ ID=4,Product="DVD"}, new Order(){ ID=3,Product="U盘"}, new Order(){ ID=3,Product="Keyboard"}, new Order(){ ID=6,Product="CD-ROM"} }; var orderByCustomer = from c in customers join o in orders on c.Id equals o.ID select new { c.Id, c.Name, o.Product }; List<Customer> cust = new List<Customer>(); foreach (var item in orderByCustomer) { cust.Add(new Customer() { Id = item.Id, Name = item.Name,
orderProduct
= item.Product }
); }
return cust; }

下面执行Webservice的CustomerByOrderList()方法测试结果,显示所有用户丁单的信息列表。

下面是示意图

LINQ在泛型数据基础上进行数据的再次查询重组合并数据,泛型数据将ADO.NET数据进行重新编排序列化,实现多个不同数据库不通服务器数据库数据关联查询,在这种情况下如果只是ADO.NET的是无法实现,例如将两个不同数据库或不通服务器上的数据关联查询生一个DataTable,让一个GirdView等数据控件绑定多个不同数据库的数据表,这时在泛型数据下将多个不同数据库数据进行重组序列化即可完成。在程序经过的过程:第一步, 数据库;第二步,通过ADO.NET查询读取数据;第三步,通过泛型将ADO.NET的DataTable转化成泛型重组;第四部,也可以和第三步放在一起,LINQ查询泛型数据。 如果是LINQ to SQL测试将数据库的数据表直接映射成实体操作类,它读取出来的数据也是直接支持泛型数据,MSDN官方介绍http://msdn.microsoft.com/zh-cn/library/bb386976.aspx。还有LINQ to SQL也是通过LINQ重新设计数据,MSDN官方介绍http://msdn.microsoft.com/zh-cn/library/bb387061.aspx

免费
.NET的LINQ原理即是Web3.0数据 (3)
本下载连接不支持第三下载工具打开,请直接点击下载即可
文章版权归属weisim3.com所有,未经书面版权许可同意,不得私自转载(或做修改转载),源文件示例仅供学习使用,更不要出于商业用途或印刷出版发行!否则将追究其相关法律责任,版权联系QQ:729260499。
遺昕 | Weisim3.com 下载许可条款 ( 您必须接受同意才可下载 ) .