LINQ

2019-04-15 20:11

LINQ初体验之LINQ to Object ...................................................................................................... 1

一步一步学Linq to sql(一):预备知识............................................................................. 4 一步一步学Linq to sql(二):DataContext与实体 ........................................................... 9 一步一步学Linq to sql(三):增删改 .............................................................................. 15 一步一步学Linq to sql(四):查询句法........................................................................... 21 一步一步学Linq to sql(五):存储过程........................................................................... 35 一步一步学Linq to sql(六):探究特性........................................................................... 46 一步一步学Linq to sql(七):并发与事务....................................................................... 53 一步一步学Linq to sql(八):继承与关系....................................................................... 60 一步一步学Linq to sql(九):其它补充........................................................................... 69 一步一步学Linq to sql(十):分层构架的例子 ............................................................... 73 Linq To Xml学习 ........................................................................................................................... 80

Linq To Xml学习 - 1. 概述 .............................................................................................. 80 Linq To Xml学习 - 2 编程概述 ....................................................................................... 82 C# 2008 学习笔记 - LINQ to XML ............................................................................................. 87

一、命名空间 ......................................................................................................................... 87 二、编程方式创建XML文档 .............................................................................................. 88 三、使用 LINQ 查询创建XML文档 ................................................................................ 89 四、加载和解析XML内容 .................................................................................................. 90 六、遍历内存中的XML文档 .............................................................................................. 90 七、修改 XML文档 ............................................................................................................. 92 使用linq to xml 快速创建自己的Rss ........................................................................................ 93

LINQ初体验之LINQ to Object

VS2008的发布,最激动人心的不过是LINQ的诞生。

What‘s LINQ? Language Integrated Query 是也。说得再明白一些,这是编程语言的一种新特性,能够将数据查询语句集成到编程语言中。目前,LINQ支持的语言有C# 和 VB。

为啥会有LINQ,主要还是因为现在的数据格式越来越多,数据库、XML、数组、哈希表……每一种都有自己操作数据的方式,学起来费事费力。于是,就有了LINQ诞生的理由——以一种统一的方式操作各种数据源,减少数据访问的复杂性。

LINQ带来很多开发上的便利。首先,他可以利用Visual Studio这个强大的IDE(这话决不是吹,Visual Studio绝对是最好用的开发工具之一),至少用Visual Studio来写SQL语句,可以有智能感知了,比起从前用查询分析器写存储过程的感觉好多了!其次,它可以把数据当成一个对象来操作,即 Data == Object? 的问题。

LINQ目前可以对XML, Object, SQL做数据访问,今后还会有LINQ to Entity的功能。

说来惭愧,我也是刚刚才接触LINQ,先从最简单的开始吧,做一个LINQ to Object的例子,实现一个对数组的操作。这个例子套用了今年TechED中海洋兄讲的例子,在此声明。

在这个例子中,我会先通过GetMethods的方法,拿到string的所有方法,接下来,就看LINQ的厉害了,这里是选出所有非静态的方法签名。 (var 可以根据上下文来判定你是什么类型)

MethodInfo[] methods = typeof(string).GetMethods(); var result = from m in methods where m.IsStatic != true select m.Name;

foreach (var r in result) {

Console.WriteLine(r.ToString()); }

Console.ReadLine();

例子虽然简单,确能从中看出LINQ的一些端倪。首先,var是什么东东? 看起来,有点像javascript里面的弱类型的变量声明。但是,C#是强类型的,尽管你用var来声明,编译器还是可以根据上下文推倒出它当前的类型。比如这个例子里面,result就是IEnumerable 类型的。在这里面,写IEnumerable和写var是一样效果的,显然,var会简单得多。你不用考虑数据操作的返回值是什么类型,还能享受强类型声明带来的方便实惠……

还有from m in methods这句,m是什么东西,m是隐式声明的一个变量,尽管没有声明,但编译器根据上下文,推断出它的类型是MethodInfo型的!.NET Framework 3.5的编译器的确是聪明了很多 ^^

上面这个例子运行起来的结果中有很多重复的记录,我们可以用distinct()来过滤掉重复的,和SQL还是很相似的说。

var result = (from m in methods where m.IsStatic != true select m.Name).Distinct(); 或者用group by 也可以

var result = from m in methods where m.IsStatic != true group m by m.Name;

但是这样子写,在输出的时候,显示的是 System.Linq.Lookup`2+Grouping[System.String,System.Reflection.MethodInfo],所以,再做一些修改

var result = from m in methods where m.IsStatic != true group m by m.Name into g

select new { MethodName = g.Key, Overload = g.Count() };

这里面又有一些新鲜的了——select new { MethodName = g.Key, Overload = g.Count() },先来看一个简单一些的例子:

class MyClass {

public string MethodName { get; set; } public int Overload { get; set; } }

class Program {

MyClass mc = new MyClass { MethodName = \ }

大括号里面的叫类初始化器,省去了构造函数,在new的同时,给对象的属性赋值。

这时候再回来看看select new { MethodName = g.Key, Overload = g.Count() },跟这个类初始化器很像吧,但是它更偷懒,new一个新对象,居然连类名都不写。没错,这就叫匿名类。不用写类的声明,直接实例化。类的名字是由编译器在编译的时候自动生成的,也就是说,你在new的时候根本不知道这个类叫啥名,因此,这里就只能用var了。这就更看出var的厉害了,不仅仅是写起来方便这么简单,在用到匿名类的时候,没有类名,这时候只能用var,嘿嘿!

一步一步学Linq to sql(一):预备知识

2007-08-14 09:00 作者: lovecherry 出处: 天极网 责任编辑:>dizzarz 什么是Linq to sql

Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。

要学好LINQ查询语法,就不得不先理解C# 3.0的一些新特性,下面一一简单介绍。

隐含类型局部变量

用var 定义隐含的局部变量个匿名类

var age = 26;

var username = \

var userlist = new [] {\

foreach(var user in userlist) Console.WriteLine(user);

纯粹给懒人用的var关键字,告诉编译器(对于CLR来说,它是不会知道你是否使用了var,苦力是编译器出的),你自己推断它的类型吧,我不管了。但是既然让编译器推断类型就必须声明的时候赋值,而且不能是null值。注意,这只能用于局部变量,用于字段是不可以的。 匿名类型

var data = new {username = \

Console.WriteLine(\ 匿名类型允许开发人员定义行内类型,无须显式定义类型。常和var配合使用,var用于声明匿名类型。定义一个临时的匿名类型在LINQ查询句法中非常常见,我们可以很方便的实现对象的转换和投影。

扩展方法

在静态类中定义静态的方法

public static class helper {

public static string MD5Hash(this string s) {

return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s,\ }

public static bool In(this object o, IEnumerable b) {

foreach(object obj in b) {

if(obj==o) return true; }

return false; }


LINQ.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于中国航空发动机的最新报道 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: