一.课堂内容
感觉这节课讲了好多好多东西,至少从13章节讲到了大概17、18章的样子。13章关于LINQ语句的一些介绍,14章是关于XML的用法,15章是LINQ语句更多实际应用,16章是ADO.NET以及relational database,17章是ASP.NET,这些都是.NET一些特性,然而我并不太会,章老师也给我看了些关于ASP的视频,然而我并不会。
这篇博客主要些关于简单的LINQ以及XML两章节的一些练习。
二.学习内容
1.LINQ
LINQ的全称是Language-INtergrated Query,也叫语言集成查询,它允许C#或者VB用代码的方式来对数据库进行操作。
我先仿照课上PPT的例子,补全了PPT上的代码:
这个静态方法和创建Customer的静态方法大致一样,把数据存入Address这个类的实例中,并存放在List中,就像一个小小的数据库。
接下来就对Customer和Address进行一些操作:
jion语句在这里是起到筛选的作用,它筛选Customer中firstname和lastname连起来的name与Address中name相等的记录,然后对lastname升序,street降序,选出新的一种数据类型,这个数据类型被new出来,并且同时包含了customer和address两个类的信息,并把这个数据类型付给var关键字后的result实例(这个result应该是个List<someclass>)。
然后,再用foreach输出结果如图。
然而这里的LINQ语句和我们接触过的SQL语句类似,都有select from where等关键字,只是在写法上略有小小的差异。
然而这几句LINQ查询语句还可以这么些:
这种用lambda表达式的写法能够得到完全相同的结果,lambda表达式的用处很多,很多时候lambda表达式可以把原本复杂冗长的代码改写得十分简洁。对于lambda表达式,在JAVA课上关于JAVA8的介绍的时候接触过一些,在C#中又遇到了,关于lambda表达式还是不太会用,可能由于我没做什么实际的练习,只是看过一些例子吧,对不同地方的lambda表达式具体该怎么写还是没什么把握的。
这里,还有一点值得注意,就是我在上一篇博客中提到的async,await关键字,我当时想说的就是它们用起来的时候和LINQ查询语句有点类似,就是你可能把相关的代码写在了前面,但是只有当你真正在使用到你查询的结果的时候,你的查询语句才会起作用(被执行),async,await异步处理也与之类似,
所以在你想让你些的查询语句先被执行一次的时候,你可能会这么写(来自ppt):
当然也有别的方法,我们只要记住这一特性,我想在以后用到LINQ语句而出现一些怪怪的错误的时候,也许就是因为这个原因。
还有PPT中提到了extension method,扩展方法,这边有个简单的例子:
这里的orderby应该是个内部的静态的方法。
而在PPT中的例子是我们自己写的一个静态的方法,那个方法有两个parameter,我们在用的时候,只需要传入一个argument,原因就是我们用该方法所指定的数据类型的实例来调用了这个静态方法,如例子中的sting。我觉得这个也蛮有意思的。
2.XML相关。
XML,全称Extensible Markup Language,可扩展标记语言,它有点儿想HTML,但有着不同的特性,它有着很广泛的用途,尤其在网络这方面,然而我对此也就一丢丢接触,完全谈不上有什么理解。
这是我在学习php相关内容的时候在书上抄的一小段代码练习:
这个.xml文件能够做的是一个非常简单的页面,应该跟html相关了,如下:
我把这个放在这里,只是想表明xml的用途广泛(然而我什么都不会~)
接下来我就PPT的前半部分的一个例子,进行了练习:
这里用到了和上面在介绍LINQ语句时候的那个小小的数据库List<Customer>,应该是其中的相关记录变换成的XML文件存储,就如同console上的输出。
这里有些细节,
首先应该是new了一个XmlDocument,然后就如下在该XML文件中穿件了元素(这就是为什么XML文件里面会有<Customers>?),
后面的name啊,address啊都有类似的创建元素的操作,然后就是一层层的添加到子节点的末尾,
然后对每一个customer读其相关的数据,
最后再输出所有子节点的内容。
后面PPT提到了在XML中常用的两个方法,如下:
一个是选取第一个符合要求的节点,一个是选取所有的,这里的xPath让我想起正则表达式,都是用来匹配的吧,有点相似。
这次博客涉及的内容有点少,完全因为后面的内容实在复杂不知道如何下笔。。。
三.课后感想
重要的事情说三遍。
好难啊好难啊好难啊。
大作业怎么办大作业怎么办大作业怎么办!
Go ahead C#!