TJU_SCS_C#学习笔记(6)

一.课堂内容

  感觉这节课讲了好多好多东西,至少从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#!

时间: 2024-10-06 07:04:06

TJU_SCS_C#学习笔记(6)的相关文章

TJU_SCS_C#学习笔记(4)

一.课堂内容 这周的课讲的内容比较多,有struct结构体,interface接口,以及C#数组中的一些特性,比如特殊的多维数组的声明方式,以及不规则数组还有模版,堆栈,字典等等,还有字符串string以及正则表达式的一些内容. 二.学习内容 1.首先练习了关于接口的相关内容,以前在学C++,和JAVA的时候对接口都没有好好理解,在C#的课上才明白了到底什么是接口,接口和抽象类有点类似,两者均不可实例化,均可以被继承,然而抽象类只能被单继承,而接口可以被多继承,为了防止接口污染,所以接口不可以太

TJU_SCS_C#学习笔记(7)(上)

一.课堂内容 上回策马奔腾讲到17章,这次从第18章讲到了22章. 18章WPF应用,这个在即将要截至的大实验中有被要求......19章Windows Form Application,20章attributes and reflection,21章线程与同步,22章stream流.不得不说内容的确非常非常的充实,我感觉我需要很长很长的时间才能够将所有的知识接触理解消化. 故,由于时间的问题,这篇博客只能比较短暂的就其中的某些知识点进行一下基础的探究. 二.学习内容 1.C#线程与同步. 线程

TJU_SCS_C#学习笔记(9)

这次的博客本应该在上个周末就贴上来,一拖再拖,拖到现在周五,然而周末还有最后一篇博客. T T 由于上个礼拜并没有上课讲内容,看了做得比较好的同学们的成果展示,有的做游戏,有的写生活应用,有的想法奇特,有的技术超群,有的包装华丽……不得不说每个同学都非常有想法,我也感受到有个稳定的团队和明确的小组分工是多么高效的事情,然而我一个人组队在编写的过程中花费了太多的时间,如果有队友一块儿交流的话,我感觉我能做得更加好. 接下来我就讲一些我在编写代码过程中学习的知识. 1.WP的Navigation和W

TJU_SCS_C#学习笔记(5)

一.课堂内容 首先延续上节课的结尾,又讲了关于正则表达式的内容,以及c#中的exceptions相关的知识,以及delegates中文翻译为委托,以及c#的时间events,还有两个关于Windows phone app开发的视频教程.正则表达式就不用多说了,这光光拉出去都是一门值得深究的课程,关于events线程啊什么的,不管是在c++还是java中都是让我头疼的内容,关于Windows phone app的开发只能说非常有意思,但是感觉还是动手实践会学的比较快,可惜我的虚拟机就是不争气,还在

TJU_SCS_C#学习笔记(8)

一.课堂内容 接着上次的第22章stream讲到了23章Programming .NET and COM(什么鬼,表示完全不懂呀!),然后PPT上的内容就讲完了,然后章老师放了两个Binding有关的WP开发视频. 我表示我当前的实验也正在研究这个binding,DataTemplate,还有Json序列化反序列化的问题,那些视频一个个看的云里雾里,不太明白怎么用啊!!!于是这么几天我都快疯了然而实验内容还卡这关键部分还没有写出来! 二.学习内容 1.Stream 先写一点stream的东西,关

TJU_SCS_C#学习笔记(3)

一.课堂内容 这周的课讲了chapter4&chapter5的一些内容,关于class和objects,以及inheritance和polymorphism.C#中的这些概念和C++,JAVA这些同为OOP的编程语言中的概念有些类似,但是具体上还是有着一些区别,由于之前学过C++,JAVA中的类和实力,继承与多态的概念,所以学习起来还算比较熟悉,但是精髓的想法以及细节上的处理还是需要话更多更多的时间来联系熟悉融会贯通. 二.学习内容 1.首先做了关于class中this指针的相关联系,PPT中提

TJU_SCS_C#学习笔记(10)

Revision History Date Issue Description Author 10/May/2015 1.0 Realize the APP with binding. Tang Hongyao 17/May/2015 V2.0 Give up binding, change another way. Tang Hongyao   Problem Statement At first, I don't know how to realize the saving and load

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu