当前位置:文档之家› Linq to SQL 的用法

Linq to SQL 的用法


var q3 = from st in stAry orderby .Length ascending, st.Age descending select st;
LINQ查询表达式
用group子句进行分组
格式:group element by key element:作为查询结果返回的元素。 key:表示分组条件 Group子句返回类型为IGrouping<Tkey, TElement>的查询结果。其中 Tkey的类型为参数key的数据类型, TElement的类型是参数element的 数据类型。 示例: var q = from st in stAry group st by st.Sex; foreach (var grp in q) { Console.WriteLine(grp.Key); foreach(var val in grp) Console.WriteLine("\t{0}", val); }


LINQ查询表达式
static void Main(string[] args) { int[] ary = { 1, 3, 5, 78, 9, 12 }; var query1 = from val in ary select val; foreach(var item in query1) Console.Write("{0} ", item); }
LINQ查询表达式
1. 2.
用from子句指定数据源
3.

数据源是实现泛型接口IEnumerble<T>或IQueryable<T>的类对 象。 IEnumerble<T>可以简单理解成一个包含多个元素的列表(或数 据库中的表),可以用foreach遍历它的所有元素,从而轻松完 成查询操作。 每个Linq查询都以from字句开始,from子句包括以下两个功能。
LINQ查询表达式
分组后排序
格式:group element by key into tmpGrp 说明:有时需要对分组的结果进行排序,再次查询等操作。这就需要使用into 关键字将group的结果保存到一个临时变量,并且必须使用新的Select 或group子句对其进行重新查询,也可以使用orderby进行排序、用 where进行过滤等操作。 示例: var q = from st in stAry group st by st.Age into stGrp orderby stGrp.Key descending select stGrp; foreach (var qi in q) //外层遍历学生年龄 { Console.WriteLine("{0}岁的学生:",qi.Key); foreach (var val in qi) //内层遍历学生信息 Console.WriteLine("\t{0}", val); }
一.LINQ简介

LINQ架构
LINQ架构
一.LINQ简介

相关命名空间
相关命名空间
一.LINQ简介

LINQ分类
LINQ包括五个部分:LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。
LINQ to SQL全称基于关系数据的.NET语言集成查询,用于以对象 形式管理关系数据,并提供了丰富的查询功能。其建立于公共语言 类型系统中的基于SQL的模式定义的集成之上,当保持关系型模型 表达能力和对底层存储的直接查询评测的性能时,这个集成在关系 型数据之上提供强类型。 LINQ to XML在System.Xml.LINQ命名空间下实现对XML的操作。 采用高效、易用、内存中的XML工具在宿主编程语言中提供 XPath/XQuery功能等。
int[] ary = { 1, 6, 98, 15, 30, 60 }; var q1 = from v1 in ary orderby v1 select v1; foreach (var qi1 in q1) Console.Write("{0} ", qi1); var q2 = from v2 in ary orderby v2 descending select v2;
LINQ查询表达式
用join子句进行内部联接
说明:参照数据库查询定义,内部联接产生一个查询结果。对于查询结果内 第一个集合中的每个元素,只要在第二个集合中存在一个匹配项元素, 该元素就出现一次。如果第一个集合中的某个元素在第二个集合中没有 匹配元素,则不会出现在查询结果中。 公式:join element in dataSource on exp1 equals exp2 示例: 取出两个数组中对5和15有相同余数的元素。 var query1 = from val1 in intAry1 join val2 in intAry2 on val1 % 5 equals val2 % 15 select new { V1 = val1, V2 = val2 }; foreach(var item in query1) Console.WriteLine(item);

LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程 语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查 询操作符允许查询作用于所有基于IEnumerable<T>接口的源,并 且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准 查询操作符集,更重要的是,第三方操作符可以用它们自己的提供 附加服务的实现来自由地替换标准查询操作符,根据LINQ模式的 习俗,这些查询喜欢采用与标准查询操作符相同的语言集成和工具 支持。
LINQ查询表达式
用join子句进行联接
说明:在查询语言中,通常需要使用联接操作。在linq中, 可以通过join子句实现联接操作。Join子句可以将来 自不同源序列,并且在对象模型中没有直接关系的元 素相关联,唯一的要求是每个源中需要共享某个可以 进行比较,以判断是否相等的值。 内部链接 分组联接 左外部链接
指定查询将采用的数据源 定义一个本地变量,表示数据源中的单个元素

from localVar in dataSource;
LINQ查询表达式
用select子句指定目标数据




在Linq查询中,select子句和from子句都是必备子句。Linq查询表达式必须以 select或group子句结束。Select子句指定在执行查询时产生结果的数据集中 元素的类型,它的格式如下所示: select element select子句中如果不指定元素的具体类型,编译器会将查询中元素的类型自动 设为 select子句中元素的具体类型 select子句中要选择的目标数据不仅可以为数据源中的元素,还可以是该元素 的不同操作结果,包括属性、方法和运算等。 在某些特殊的场合下,往往查询结果只是临时使用一下,而且查询结果的数 据包括很多字段,并非简单的一个属性。则可以在select子句中使用匿名类型 来解决这类问题 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中, 而无需首先显式定义一个类型。类型名由编译器生成,并且不能在源代码级 使用。这些属性的类型由编译器推断。下面的示例演示一个用两个分别名为 Aw { Amount = 108, Message = "Hello" };
LINQ查询表达式
隐式类型
从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型 var。隐式类型的本地变量是强类型变量(就好像您已经声明该类 型一样),但由编译器确定类型。下面的两个 i 声明在功能上是等 效的: var i = 10; // 隐式类型 int i = 10; //显式类型 备注:var关键字声明的对象必须是在声明时就必须能推断出其类 型的,所以,声明一个var类型对象时候就就必须对它进行初始化, 让编译器能推断出它的类型,所以,这样的代码是无法编译过的 var query2; query2 = 1;
LINQ查询表达式
用from子句进行复合查询1
说明: 查询q采用两个from子句实现复合查询,第二个from子句的元素从第一 个from子句的结果中再次查询 示例: var q = from st in stAry from scr in st.Scores where scr.Score > 80 group scr by ; foreach (var grp in q) { Console.WriteLine(grp.Key); foreach(var item in grp) Console.WriteLine("\t{0}", item); }
跟我学LINQ TO SQL
一.LINQ简介
什么是LINQ LINQ分类 如何使用LINQ TO SQL 对LINQ的迷惑

一.LINQ简介

什么是LINQ
LINQ是Language Integrated Query的简称,它是集成在.NET编程 语言中的一种特性。已成为编程语言的一个组成部分,在编写程序 时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静 态类型等强类型语言的好处。并且它同时还使得查询可以方便地对 内存中的信息进行查询而不仅仅只是外部数据源。
LINQ查询表达式
用orderby子句进行排序
格式:orderby expression [sortType] element:是要进行排序的字段,它可以是数据源中的元素,也可以是对元素的操作结果。 sortType:可选参数,表示排序类型,包括升序(ascending)和降序(descending)两个可选值 示例:
相关主题