LINQ入门系列Word文档格式.docx
- 文档编号:15706214
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:30
- 大小:550.95KB
LINQ入门系列Word文档格式.docx
《LINQ入门系列Word文档格式.docx》由会员分享,可在线阅读,更多相关《LINQ入门系列Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
比如:
内存,数据库,XML,XXX。
而不是辛苦的去拼接SQL语句,或者是更多不同标准的SQL语句。
这实在是太痛苦了。
简单的做几个小例子,展示一下LINQ的新特性:
1,操作内存数据
查询内存中的集合,根据条件筛选结果。
string[]words={"
hello"
"
beautifulgirl"
linq"
wonderful"
word"
};
varshortwords=fromwordinwords
whereword.Length<
=5
selectword;
foreach(varwordinshortwords)
Console.WriteLine(word);
当然,代码和传统的操作相比,似乎没见到有什么大的改进,反而让人很奇怪。
有些朋友就疑问了,我用传统的string也可以做的很好,干嘛用LINQ?
突然,需求变更了。
要求按照字母顺序对集合排序,然后按照长度分组,然后按照单词长度逆向排序,然后分组展示结果。
既然有了LINQ,那么就算这个需求再变态,我们也不用担心大量的代码了。
vargroups=fromwordinwords
orderbywordascending
groupwordbyword.LengthintolengthGroups
orderbylengthGroups.Keydescending
selectnew{Length=lengthGroups.Key,Words=lengthGroups};
foreach(vargroupingroups)
{
Console.WriteLine("
Wordsoflength"
+group.Length);
foreach(stringwordingroup.Words)
"
+word);
}
OK,就是这么简单,看结果:
当然,LINQ远远不止这么简单的功能和应用场景。
在我们用途最广泛的数据库访问,和XML操作上,一样能够大展身手,篇幅有限,我简单的介绍下在数据访问上的简单应用。
为了让新人容易操作和理解,我们拿SQLSERVER2000里面自带的数据库Northwind做例子,也省去了建立数据库的时间。
我们用Employees表做实验,表结构如图所示:
OK,需求来了,我们筛选出City=London的Name。
注:
【LINQ可以自动生成实体类和数据访问代码,但是,在这里为了演示,我自己手写这个实体类。
】
[Table(Name="
Employees"
)]
classEmployees
{
[Column]
publicstringFirstName{get;
set;
publicstringCity{get;
//这里为了简单,映射我只写出所需要的,而不是映射所有的列。
//连接字符串定义;
当然,实际开发中,LINQ会自动生成。
stringconnectstring="
DataSource=.;
InitialCatalog=Northwind;
IntegratedSecurity=True"
;
DataContextdb=newDataContext(connectstring);
//DataContext构造函数需要这个connectstring。
varEmployees=
fromEmpindb.GetTable<
Employees>
()
whereEmp.City=="
London"
selectEmp;
//筛选City等于London的对象
foreach(varEmpinEmployees)
Console.WriteLine(Emp.FirstName);
OK,结果出来了,如图:
我们需要的结果已经筛选完毕。
通过我们的小例子,可以看得出LINQ的优势:
1,自动打开数据库连接并且自己维护;
2,内置SQL查询生成功能;
3,自动执行SQL查询;
4,自动将结果填充到对象;
5,强类型数据访问;
6,开发人员使用自己熟悉的语言操作数据对象,如C#,VB.NET。
传统的ADO.NET,也确实有不足之处:
1,以字符串形式构造SLQ语句;
2,没有编译时检查;
3,松散绑定的参数;
4,弱类型结果集合;
5,代码冗长;
6,需要开发人员额外学习其他技能;
--------------------------------
面向对象的思想和数据与对象之间的阻抗失调,以及对象关系映射,在LINQ提出的解决方案中,都得到了解决。
从传统数据访问API,到基于对象和元数据库的设计,微软站在了风口浪尖上,最终的产品,也确实让人满意。
尤其是在没有使用新的CLR的情况下,把C#和VB.NET的语言特性扩展到这样的程度,让人惊叹,也许,这就是下一个传奇吧。
LINQ入门系列
(一)一个小小小小的场景
上一次,我们通过《伟大的LINQ》了解了LINQ的一些新特性,今天,我们从C#的角度上来分析一下它的扩展。
需求1:
显示当前系统运行的进程列表。
解决方案1:
基于.NET2.0
使用System.Diagnostice.Process类里面的GetProcesses方法即可。
代码:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Diagnostics;
classProgram
staticvoidDisplayProcesses()
List<
String>
processes=newList<
string>
();
foreach(ProcessprocessinProcess.GetProcesses())
processes.Add(process.ProcessName);
ObjectDumper.Write(processes);
//ObjectDumper是MS的一个辅助类,用来输出结果。
staticvoidMain(string[]args)
DisplayProcesses();
代码很简洁,也符合基本规范,还用到了泛型,集重用,类型安全,优化性能与一身。
结果如下:
看上去很美好;
突然,需求变了。
。
要求显示每个进程的ID,名称,物理内存使用情况。
啥说的没有,咱改呗。
staticclassProgram
{
classProcessData
publicInt32Id;
publicInt64Memory;
publicstringName;
ProcessData>
ProcessDatadata=newProcessData();
data.Id=process.Id;
data.Name=process.ProcessName;
data.Memory=process.WorkingSet64;
processes.Add(data);
}
看上去好像更漂亮了。
有点学院派的风格了。
哈哈哈哈。
要是再弄的看上去先进点,就来个自动属性和隐式类型吧。
publicInt32Id{get;
publicstringName{get;
publicInt64Memory{get;
varprocesses
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINQ 入门 系列
![提示](https://static.bdocx.com/images/bang_tan.gif)