仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 639|回复: 7
打印 上一主题 下一主题

[学习教程] NET网页编程之分享LINQ开辟中的点点滴滴

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:28:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!<p>写在后面
实在在09年就已进修过LINQ了,并被她那幽美的语法所吸引,只是如今地点的公司还在利用VS2005在.Net2.0的框架上面的开辟,以是LINQ也好久没有效过了,比来看部门的同事对这个有些乐趣,以是盘算收拾点器材出来跟人人一同做个分享。
甚么是LINQ
LINQ是LanguageIntegratedQuery的简称,它是集成在.NET编程言语中的一种特征。已成为编程言语的一个构成部分,在编写程序时能够失掉很好的编译时语法反省,丰厚的元数据,智能感知、静态范例等强范例言语的优点。而且它同时还使得查询能够便利地对内存中的信息举行查询而不单单只是内部数据源。
LINQ包含LINQtoObjects,LINQtoSQL,LINQtoXML,LINQtoDataSet等,本篇从LINQtoObjects入手下手懂得LINQ的外相。
入手下手LINQ前你要晓得的
扩大办法
望文生义就是对现有类举行扩大的的办法,扩大办法能够在不修正现有类的情形下,为现有类增添大众的接口(不是C#中的interface)。
扩大办法实质上是一个静态办法,分歧的地方在于它的第一个参数必需有this关头字声明,而且第一个参数的范例即为要扩大的范例。如
<olclass="dp-c">publicstaticdoubleToDouble(thisstringsource){doubleres=0d;double.TryParse(source,outres);returnres;}publicstaticvoidSimpleExtesionMethod(){doubled="12345.54321".ToDouble();Console.WriteLine(d);}
这里是个复杂的将字符串转为double范例的扩大办法,只需援用了该办法的定名空间,则都能够间接用string范例来挪用ToDouble办法。
扩大办法是后文的基本,C#3.0中的LINQ的完成都是基于扩大办法,经由过程对IEnumerable<T>接口(LINQtoObjects)的扩大和对IQueryable<T>的扩大来完成LINQ的相干功效,而LINQ的相干关头字终极都是转化为对IEnumerable<T>(IQueryable<T>)的挪用。
Lambda表达式
lambda表达式实在就是就是.net2.0中的匿名办法,然后再3.0中以一种更幽美的姿势出现出来。
lambda表达式的基础语法为
(参数列表)=>{语句块;}大概
(参数列表)=>表达式
当参数列表中只要一个参数的时分,圆括号能够省略
<olclass="dp-c">Func<string,string>func=x=>x+x;Console.WriteLine(func("a"));
Var:隐式范例化变量
利用与能够由编译器推导出的变量的声明,不必要显式指定工具的范例。
<olclass="dp-c">varcontainer=newList<string>{"张三","李四","王五"};IEnumerable<string>query=fromnameincontainerselectname;
上例中因为界说中已指了然工具的范例,声明中已完整没有需要利用显现的范例界说,以是可使用var关头字。
关于匿名工具
<olclass="dp-c">vartest=new{Name="Sth.",Type="UnKnown"};
因为没法用一个范例类声明匿名工具,此时能够用var是声明。
注重var只是省下了显式声明的历程,而C#自己就是静态言语,以是var所声明的变量的范例已断定任然是不克不及改动的,亦即,var并不是是变体范例。
LINQ对谁合用
LINQ的语法经由过程System.LINQ上面的Enumerable类供应撑持,经由过程察看他的署名,你就会发明他为IEnumerable<T>完成了一系列的扩大办法,也就是说,只需是完成了IEnumerable<T>的工具都可使用LINQ的语法来查询。
而关于只完成了IEnumerable接口而没有完成IEnumerable<T>的工具能够经由过程
<olclass="dp-c">publicstaticIEnumerable<TResult>Cast<TResult>(thisIEnumerablesource);
来将IEnumerable接口转为IEnumerable<T>(比方ArrayList)。
LINQ中的关头字
在C#3.0中,为LINQ引进了一些新的关头字,他们是:
<olclass="dp-c">fromjoinwheregroupintoletorderbyselect
熟习Sql的同砚看着是否是有些眼生呢,实在在LINQ中他们的涵义和在SQL中相似的,以是会很简单了解的。接上去的工夫,复杂先容下这些关头字的利用。
from
from子句是一个LINQ查询的入手下手,任何一个LINQ语句都是以from入手下手,from子句指定查询的容器,和在此语句无效的部分变量(用来指定容器中的一项,from子句的效果很相似于foreach)。from子句的语法为
<olclass="dp-c">fromlocalincontainerlocal
就是在此LINQ语句中的部分变量,因为container必需为IEnumerable<T>,他的范例能够由container推导出来(即T)。上一段复杂的例子:
<olclass="dp-c">varcontainer=newList<string>{"张三","李四","王五"};varquery=fromnameincontainerselectname;foreach(stringnameinquery){Console.WriteLine(name);}
输入
张三
李四
王五
<p>假如container仅仅完成IEnumerable而没有完成IEnumerable<T>,则必要显式指定部分变量的范例,大概是使无论谁倒了对双方阵营的粉丝们也是有害无益。
山那边是海 该用户已被删除
沙发
发表于 2015-1-18 14:44:07 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
小妖女 该用户已被删除
板凳
发表于 2015-1-26 15:51:23 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
只想知道 该用户已被删除
地板
发表于 2015-2-4 20:31:04 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-10 07:34:04 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
老尸 该用户已被删除
6#
发表于 2015-3-10 12:49:14 | 只看该作者
PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-17 07:38:27 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
再现理想 该用户已被删除
8#
发表于 2015-3-24 03:05:48 | 只看该作者
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-17 05:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表