Linq学习笔记

ccoderlh 2008-01-24 02:00:29
Linq是Language-Integrated Query的简称,是设置在visual studio 2008上,纳入c#和visual basic语言延伸的强大查询功能.能容易的查询和更新数据,并且能支持多种数据存储.visual studio 2008提供集合使得Linq能查询.net Framework collections,SQL databases, ADO.NET Datasets, and XML documents.Linq 提供了如下的优点:
(1).Linq简化了查询,假如你知道了c#或者visual basic,那么你能轻松的使用Linq;
(2)Linq统一任何数据源的数据查询,你能查询xml文档,同样的方式你可以查询sql database,ado.net dataset,in-memory collection和其他分布或者本地的数据源
(3)Linq加强了相关数据和面向对象的联系
(4)Linq加快的开发和debug
下面就对自己学习的过程记录一些自己学习感受,望大家指出不足

所有的Linq查询有下面基本的3个行为构成:
1,包含数据源
2,创建查询
3,执行查询
这里需要特别注意的是,查询的执行严格区别于查询本身,换句话来说就是不会获得任何的数据仅仅通过常见查询,要执行的过程中才会获得.
下面就是一段代码,表示了查询操作的3部分
// Data source.
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

// Query creation.
IEnumerable<int> numQuery =
from num in numbers
where (num % 2) == 0
select num;

// Query execution.
foreach (int j in numQuery)
{
Console.Write("{0,1} ", j);
}
下面对这3部分做进一步的解释:
The Data Source
上面例子中的数据源类型是数组,支持IEnumerable接口,是它作为Linq查询的数据源,IEnumerable能被迭代通过foreach,这是Linq查询是如何执行的.支持IEnumerable或者是一个继承于该接口的其他接口,如IQueryable被称为可查询的类型.除了次类可查询的类型,其他的类型例xml document,Linq提供了可查询的类型XElement
// Create a data source from an XML document.
// using System.Xml.Linq;
XElement contacts = XElement.Load(@"c:\myContactList.xml");
使用Linq to sql,你首先创建一个对象关系的映射通过O/R Designer,处理与database的通讯,并且Table支持IQueryable
// Create a data source from a SQL table.
// using System.Data.Linq;
DataContext db = new DataContext("c:\\northwind\\northwnd.mdf");
Table<Customer> Customers = db.GetTable<Customer>();

The Query
查询是想从数据源获得数据,查询可以指定什么信息应该被选择,被分类等并且什么类型应该被返回,一个查询语句至少应该包含2个语法元素from 和select
假如查询要返回一系列的值,查询变量必须是可查询的类型,最重要的是要集注查询变量本身不会采取任何行为,查询也不会返回数据.他仅仅是保存查询的信息,你创建了查询,当你去执行的时候才回获得数据

Query Execution
查询执行分为下面2类:
Deferred Execution(推迟执行)
当查询创建的时候查询变量本身知识存储查询的命令,真正意义上的查询被推迟到当你通过foreach循环在查询变量上迭代时候.
查询中返回一系列结果,查询变量本身不去拥有查询结果,着意味这你可以执行查询随你所需要,数据源没时刻更新,你也可以随时执行查询获得不同的数据.
Immediate Execution
与前面的不同,即使查询获得单独的一个值而且是立即的,例如Count,
Max,Average,First,这些查询立即获得一个单独的值,如下
int query = (from num in numbers
where (num % 2) == 0
select num).Count();
还有强制获得立即查询并且不是获得一个单独的值可以通过调用
ToList或者ToArray方法在一个查询变量身上
如下
List<int> query2 =
(from num in numbers
where (num % 2) == 0
select num).ToList();
// or
var query3 =
(from num in numbers
where (num % 2) == 0
select num).ToList();


转自:http://www.cnitblog.com/carternzj/archive/2007/07/31/31061.aspx
...全文
2037 48 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxh_0829 2012-10-16
  • 打赏
  • 举报
回复
楼主好人啊!
wz_jyp 2012-08-16
  • 打赏
  • 举报
回复
支持一下。。。
Threes_degree 2012-08-14
  • 打赏
  • 举报
回复
你说的这些东西都是网上随便翻出来的,我想要找个稀罕的。。。。
你有dblinq 的 LINQ TO MYSQL 相关的教程吗?
流年莫逝 2012-07-26
  • 打赏
  • 举报
回复
好,支持!!!!
CodeFriends 2012-07-22
  • 打赏
  • 举报
回复
看了个开头,先回帖再接着看!
Junny 2012-05-24
  • 打赏
  • 举报
回复
网上一大把的,比这好的好很多 给你链接:http://www.cnblogs.com/lifepoem/archive/2011/10/25/2223765.html
http://www.cnblogs.com/cxd4321/archive/2009/09/28/1575890.html
http://www.cnblogs.com/liuning8023/archive/2011/11/25/2263101.html
很不错的文章...
Joel_L 2012-05-24
  • 打赏
  • 举报
回复
........................
刀枪blue 2011-06-01
  • 打赏
  • 举报
回复
学习。。。。
kingdom_0 2011-05-11
  • 打赏
  • 举报
回复
哇……还没结贴……
kingdom_0 2011-05-04
  • 打赏
  • 举报
回复
哇……这么久了,怎么没有人跟贴……
窘。。。。
kingdom_0 2011-04-29
  • 打赏
  • 举报
回复
好好学习,天天向Linq
zhangyong361055720 2011-04-28
  • 打赏
  • 举报
回复
很不错哦
nihaobd123 2011-04-22
  • 打赏
  • 举报
回复
学习了呵呵呵!!!
oolinyu 2011-04-01
  • 打赏
  • 举报
回复
来个实历
telancs 2011-03-31
  • 打赏
  • 举报
回复
zhichia
yangsonglinT14 2011-03-09
  • 打赏
  • 举报
回复
不错。。
mutounannan 2011-03-09
  • 打赏
  • 举报
回复
学习,谢谢楼主!
tnt123688 2011-03-02
  • 打赏
  • 举报
回复
恩,不错,辛苦楼主了
漂石 2011-02-28
  • 打赏
  • 举报
回复
学习中,貌似Linq很好用
jeje 2011-02-28
  • 打赏
  • 举报
回复
希望LZ多发一些Linq的案例代码。谢谢。顶
加载更多回复(23)

8,494

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧