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)两个可选值 示例:
python的to_sql用法
python的to_sql用法
Python的to_sql用法指的是使用Python语言中的pandas库中的to_sql方法将数据写入SQL数据库中。
to_sql方法可以将DataFrame对象的数据写入到SQL数据库的表中,并支持更新、替换和追加数据等操作。
使用to_sql方法可简化数据导入过程,提高数据库操作的效率和准确性。
在使用to_sql方法时,需要先创建一个数据库连接对象,然后将DataFrame对象与目标表名、数据库连接对象等参数传入to_sql方法中即可完成数据写入操作。
to_sql方法可以自动根据DataFrame对象的列名和数据类型生成相应的表结构,也可以手动指定表结构。
需要注意的是,在使用to_sql方法前,需要确保已经安装了相应的数据库驱动程序。
- 1 -。
Linq语法详细(三种方式:linq、Lambda、SQL语法)
Linq语法详细(三种⽅式:linq、Lambda、SQL语法)三种⽅式:linq、Lambda、SQL语法1.简单的linq语法//1var ss = from r in db.Am_recProSchemeselect r;//2var ss1 = db.Am_recProScheme;//3string sssql = "select * from Am_recProScheme";2.带where的查询//1var ss = from r in db.Am_recProSchemewhere r.rpId > 10select r;//2var ss1 = db.Am_recProScheme.Where(p => p.rpId > 10);//3string sssql = "select * from Am_recProScheme where rpid>10";3.简单的函数计算(count,min,max,sum)//1////获取最⼤的rpId//var ss = (from r in db.Am_recProScheme// select r).Max(p => p.rpId);////获取最⼩的rpId//var ss = (from r in db.Am_recProScheme// select r).Min(p => p.rpId);//获取结果集的总数//var ss = (from r in db.Am_recProScheme// select r).Count();//获取rpId的和var ss = (from r in db.Am_recProSchemeselect r).Sum(p => p.rpId);//2//var ss1 = db.Am_recProScheme.Max(p=>p.rpId);//var ss1 = db.Am_recProScheme.Min(p => p.rpId);//var ss1 = db.Am_recProScheme.Count() ;var ss1 = db.Am_recProScheme.Sum(p => p.rpId);Response.Write(ss);//3string sssql = "select max(rpId) from Am_recProScheme";sssql = "select min(rpId) from Am_recProScheme";sssql = "select count(1) from Am_recProScheme";sssql = "select sum(rpId) from Am_recProScheme";4.排序order by desc/ascvar ss = from r in db.Am_recProSchemewhere r.rpId > 10orderby r.rpId descending //倒序// orderby r.rpId ascending //正序select r;//正序var ss1 = db.Am_recProScheme.OrderBy(p => p.rpId).Where(p => p.rpId > 10).ToList();//倒序var ss2 = db.Am_recProScheme.OrderByDescending(p => p.rpId).Where(p => p.rpId > 10).ToList();string sssql = "select * from Am_recProScheme where rpid>10 order by rpId [desc|asc]";5.top(1)//如果取最后⼀个可以按倒叙排列再取值var ss = (from r in db.Am_recProSchemeselect r).FirstOrDefault();//()linq to ef 好像不⽀持 Last()var ss1 = db.Am_recProScheme.FirstOrDefault();//var ss1 = db.Am_recProScheme.First();string sssql = "select top(1) * from Am_recProScheme";6.跳过前⾯多少条数据取余下的数据//1var ss = (from r in db.Am_recProSchemeorderby r.rpId descendingselect r).Skip(10); //跳过前10条数据,取10条之后的所有数据//2var ss1 = db.Am_recProScheme.OrderByDescending(p => p.rpId).Skip(10).ToList();//3string sssql = "select * from (select ROW_NUMBER()over(order by rpId desc) as rowNum, * from [Am_recProScheme]) as t where rowNum>10";7.分页数据查询//1var ss = (from r in db.Am_recProSchemewhere r.rpId > 10orderby r.rpId descendingselect r).Skip(10).Take(10); //取第11条到第20条数据//2 Take(10): 数据从开始获取,获取指定数量(10)的连续数据var ss1 = db.Am_recProScheme.OrderByDescending(p => p.rpId).Where(p => p.rpId > 10).Skip(10).Take(10).ToList();//3string sssql = "select * from (select ROW_NUMBER()over(order by rpId desc) as rowNum, * from [Am_recProScheme]) as t where rowNum>10 and rowNum<=20";8.包含,类似like '%%'//1var ss = from r in db.Am_recProSchemewhere r.SortsText.Contains("张")select r;//2var ss1 = db.Am_recProScheme.Where(p => p.SortsText.Contains("张")).ToList();//3string sssql = "select * from Am_recProScheme where SortsText like '%张%'";9.分组group by//1var ss = from r in db.Am_recProSchemeorderby r.rpId descendinggroup r by r.recType into nselect new{n.Key, //这个Key是recTyperpId = n.Sum(r => r.rpId), //组内rpId之和MaxRpId = n.Max(r => r.rpId),//组内最⼤rpIdMinRpId = n.Min(r => r.rpId), //组内最⼩rpId};foreach (var t in ss){Response.Write(t.Key + "--" + t.rpId + "--" + t.MaxRpId + "--" + t.MinRpId);}//2var ss1 = from r in db.Am_recProSchemeorderby r.rpId descendinggroup r by r.recType into nselect n;foreach (var t in ss1){Response.Write(t.Key + "--" + t.Min(p => p.rpId));}//3var ss2 = db.Am_recProScheme.GroupBy(p => p.recType);foreach (var t in ss2){Response.Write(t.Key + "--" + t.Min(p => p.rpId));}//4string sssql = "select recType,min(rpId),max(rpId),sum(rpId) from Am_recProScheme group by recType";10.连接查询//1var ss = from r in db.Am_recProSchemejoin w in db.Am_Test_Result on r.rpId equals w.rsIdorderby r.rpId descendingselect r;//2var ss1 = db.Am_recProScheme.Join(db.Am_Test_Result, p => p.rpId, r => r.rsId, (p, r) => p).OrderByDescending(p => p.rpId).ToList(); //3string sssql = "select r.* from [Am_recProScheme] as r inner join [dbo].[Am_Test_Result] as t on r.[rpId] = t.[rsId] order by r.[rpId] desc";11.sql中的In//1var ss = from p in db.Am_recProSchemewhere (new int?[] { 24, 25,26 }).Contains(p.rpId)select p;foreach (var p in ss){Response.Write(p.Sorts);}//2string st = "select * from Am_recProScheme where rpId in(24,25,26)";。
join在sql中的用法
join在sql中的用法join在SQL中的用法在SQL中,join是一种常用的操作,用于将多个表中的数据连接在一起。
通过join操作,可以从多个表中检索数据并根据指定的条件将它们组合在一起。
本文将详细介绍join的用法,包括不同类型的join操作以及它们的应用场景。
一、什么是join操作在数据库中,数据通常存储在多个表中,这些表之间通过关系进行连接。
而join操作就是通过某种条件连接多个表,并返回满足条件的数据。
join 操作可以根据连接条件的不同分为多种类型,如内连接、外连接和交叉连接等。
二、内连接内连接是最常用的join操作之一。
当执行内连接时,只有满足连接条件(即两个表中对应列的值相等)的行才会被返回。
内连接可以使用关键字INNER JOIN或简单地使用JOIN来实现。
下面是一个示例,假设我们有两个表- "顾客"表和"订单"表:表:顾客顾客ID 姓名地址1 张三北京市2 李四上海市3 王五广州市表:订单订单ID 顾客ID 订单日期1 1 2022-01-012 2 2022-01-023 1 2022-01-03我们可以使用以下SQL语句来执行内连接操作:SELECT *FROM 顾客INNER JOIN 订单ON 顾客.顾客ID = 订单.顾客ID;将上述SQL语句执行后,将返回一个新的表,包含了"顾客"表和"订单"表中符合连接条件的行。
结果如下:顾客ID 姓名地址订单ID 顾客ID 订单日期1 张三北京市 1 1 2022-01-011 张三北京市 3 1 2022-01-032 李四上海市 2 2 2022-01-02三、外连接外连接也是一种常用的join操作。
与内连接不同的是,外连接会返回连接表中的所有行,即使没有满足连接条件的行。
外连接可以分为左外连接、右外连接和全外连接等几种类型。
1.左外连接左外连接即包含左表中的所有行,以及右表中与左表连接条件匹配的行。
linq-通用和便利的信息查询方式
泛型委托 Dim upperImplicit As Func(Of String, String) = Function(s) s.ToUpper()
LINQ To SQL-介绍
LINQ to SQL 是 .NET Framework 3.5 版的 一个组件,提供了用于将关系数据作为对象 管理的运行时基础结构。 在 LINQ to SQL 中,关系数据库的数据模型 映射到用开发人员所用的编程语言表示的对 象模型。 当应用程序运行时,LINQ to SQL 会将对象 模型中的语言集成查询转换为 SQL,然后将 它们发送到数据库进行执行。当数据库返回 结果时,LINQ to SQL 会将它们转换回您可 以用您自己的编程语言处理的对象。
Language Integrated Query
LINQ表达式
Dim words as String() = _ {"hello", "wonderful", "linq", "beautiful", "world“} Dim shortWords = _ From word In words _ Where word.Length > 5 _ Select word
THANKS
标准查询运算符
“标准查询运算符”是组成语言集成查 询 (LINQ) 模式的方法。 实现了 IEnumerable(Of (T) 接口戒 IQueryable(Of (T)) 接口。标准查询运 算符提供了包括筛选、投影、聚合、排 序等功能在内的查询功能
标准常用查询运算符
LINQ执行
确立数据源 创建查询 执行查询
linq转化为sql语句的方法
linq转化为sql语句的方法Linq转化为SQL语句的方法概述Linq(Language Integrated Query)是微软推出的一种用于查询和操作数据的统一编程模型。
它可以在不同的数据源上执行查询,例如关系型数据库、XML文档等。
在开发过程中,我们常常需要将Linq 表达式转化为相应的SQL语句,以便对数据库进行操作。
本文将详细介绍多种将Linq转化为SQL语句的方法。
1. LINQ to SQL基本概念LINQ to SQL是一种将LINQ查询转化为SQL语句的方法。
它是Entity Framework的一部分,提供了一种直接在.NET应用程序中使用对象来表示和操作关系型数据库的方式。
在LINQ to SQL中,可以通过DataContext对象来执行查询,并将查询结果转化为SQL语句。
示例代码using System;using ;using ;public class Program{public static void Main(){// 创建DataContext对象,连接数据库DataContext context = new DataContext("Data Sour ce=.;Initial Catalog=MyDatabase;Integrated Security=True ");// 创建查询表达式var query = from c in <Customer>()where == "Beijing"select c;// 执行查询并获取SQL语句string sql = (query).CommandText;// 输出SQL语句(sql);}}2. Entity Framework基本概念Entity Framework是微软推出的一种对象关系映射(ORM)工具,可以映射.NET对象与数据库中的表、视图等关系。
使用LINQ操作SQL Server数据库
info.Email = tbEmail.Text;
info.Message = tbMessage.Text; //执行添加
lqDB.Leaveword.InsertOnSubmit(info);
lqDB.SubmitChanges();
使用LINQ执行操作数据库(3)
3.修改数据库中的数据
LinqDBDataContext lqDB = new LinqDBDataContext(ConfigurationManager.ConnectionStrings["db_A SPNETConnectionString"].ConnectionString.ToString()); var result = from r in lqDB.Leaveword where r.id == 1 select r;
//查询要删除的记录
var result = from r in lqDB.Leaveword where r.id == 1
select r;
//删除数据,并提交到数据库中 lqDB.Leaveword.DeleteAllOnSubmit(result); lqDB.SubmitChanges();
select r;
GridView1.DataSource = result; GridView1.DataBind();
使用LINQ执行操作数据库(2)
2.向数据库中添加数据
LinqDBDataContext lqDB = new LinqDBDataContext(ConfigurationManager.ConnectionStrings["db_A SPNETConnectionString"].ConnectionString.ToString()); Leaveword info = new Leaveword(); //要添加的内容 info.Title = tbTitle.Text;
Linq基础+Lambda表达式对数据库的增删改及简单查询
Linq基础+Lambda表达式对数据库的增删改及简单查询⼀、Linq to sql 类⾼集成化的数据库访问技术使⽤Linq可以代替之前的,省去了⾃⼰敲代码的实体类和数据访问类的⼤量⼯作实体类:添加⼀个Linq to sql 类 ----选择要使⽤的数据库---- 拖⼊要使⽤的表需要⽴即保存就相当于创建实体类如果进⾏属性扩展,在App_Code下添加类,类名同表名⼀致。
将该类在访问修饰符后加上partial,将该类定为实体类的⼀部分数据访问类:不⽤在App_Code下再建数据访问类了。
直接在使⽤数据访问类的地⽅⽤数据库上下⽂进⾏编写。
ers.ToList(); //是将Users表转化为⼀个泛型集合。
也就相当于查询全部的⽅法⼆、利⽤Linq对数据库进⾏相关操作1、添加数据每⼀条数据都是⼀个实体类对象。
先将其实例化出来,再给对象的每个属性赋值。
在数据访问类中进⾏添加数据操作添加的⽅法:ers.InsertOnSumbit(对象);⽅法执⾏结束后提交对数据库的更改:con.SubmitChanges();2、删除数据删除数据前要先查到这条数据再进⾏删除操作通过ids进⾏查询这条数据返回⼀个对象Users u = ers.Where(r=>r.ids.Tostring()==ids).FirstOrDefault();where括号内接的是Lambda表达式,r代表⼀个Users对象,=>是基本格式,FirstOrDefault()返回第⼀条数据或者返还空如果u不是空,则在数据访问类中进⾏删除。
ers.DeleteOnSubmit(对象);con.SubmitChanges();3、数据修改数据的修改同样也是需要先查到这条数据,将返回的这个对象的要修改的属性进⾏重新赋值最后con.SubmitChanges();4、简单数据查询直接在数据访问类中根据对象的属性进⾏查询,多个查询条件中间⽤ && 连接;如 ers.Where(r=>erName=="zhangsan" && r.PassWord=="123").FirstOrDefault();。
LINQ操作数据库
第一步、创建了一个SQL Server数据源先创建数据库又建了一个User表相信这些都是小儿科的东西了,我就不再多说了。
第二步、添加一个LINQ to SQL类我创建了一个User.dbml的LINQ to SQL类然后从服务器资源管理器中把表拖拽到视图中,可以双击视图中表的标题来重命名。
最后保存一下。
第三步、创建并执行查询namespace test{public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){Bind();}}private void Bind(){UserDataContextdb = new UserDataContext(); //创建一个DataContext类对象是必不可少的var user = from u in db.MyUser //在上面为它重命名为MyUser了,原来的表名为Userselect u; //这里的查询就和SQL差不多了GridView1.DataSource = user; //绑定数据源GridView1.DataBind();}//插入信息protected void btnAdd_Click(object sender, EventArgs e){UserDataContextdb = new UserDataContext();stringuserName = TextBox1.Text;stringuserPwd = TextBox2.Text;//db.MyUser.InsertOnSubmit(new MyUser { Name=userName,Pwd=userPwd});//上面这句和下面这句都可以实现,只不过是两种不同的方法var user = new MyUser { Name = userName, Pwd = userPwd };db.MyUser.InsertOnSubmit(user); //执行插入db.SubmitChanges(); //提交对数据库做的修改Bind();}后面的删除、更新就跟上面的插入大同小异了,只是查询和执行查询所用到的方法不同而已。
LINQ系列:LINQtoSQLGroupbyHaving分组
LINQ系列:LINQtoSQLGroupbyHaving分组1. 简单形式var expr = from p in context.Productsgroup p by p.CategoryID into gselect g;foreach (var item in expr){Console.WriteLine(item.Key);foreach (var p in item){Console.WriteLine("{0}-{1}", p.ProductID, p.ProductName);}}SELECT[Project2].[CategoryID] AS [CategoryID],[Project2].[C1] AS [C1],[Project2].[ProductID] AS [ProductID],[Project2].[CategoryID1] AS [CategoryID1],[Project2].[ProductName] AS [ProductName],[Project2].[UnitPrice] AS [UnitPrice],[Project2].[UnitsInStock] AS [UnitsInStock],[Project2].[Discontinued] AS [Discontinued]FROM ( SELECT[Distinct1].[CategoryID] AS [CategoryID],[Extent2].[ProductID] AS [ProductID],[Extent2].[CategoryID] AS [CategoryID1],[Extent2].[ProductName] AS [ProductName],[Extent2].[UnitPrice] AS [UnitPrice],[Extent2].[UnitsInStock] AS [UnitsInStock],[Extent2].[Discontinued] AS [Discontinued],CASE WHEN ([Extent2].[ProductID] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]FROM (SELECT DISTINCT[Extent1].[CategoryID] AS [CategoryID]FROM [dbo].[Product] AS [Extent1] ) AS [Distinct1]LEFT OUTER JOIN [dbo].[Product] AS [Extent2] ON [Distinct1].[CategoryID] = [Extent2].[CategoryID]) AS [Project2]ORDER BY [Project2].[CategoryID] ASC, [Project2].[C1] ASC2. 最⼤值var expr = from p in context.Productsgroup p by p.CategoryID into gselect new{g.Key,MaxUnitPrice = g.Max(p => p.UnitPrice)};foreach (var item in expr){Console.WriteLine("{0}-{1}", item.Key, item.MaxUnitPrice);}SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[A1] AS [C1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],MAX([Extent1].[UnitPrice]) AS [A1]FROM [dbo].[Product] AS [Extent1]GROUP BY [Extent1].[CategoryID]) AS [GroupBy1]3. 最⼩值var expr = from p in context.Productsgroup p by p.CategoryID into gselect new{g.Key,MinUnitPrice = g.Min(p => p.UnitPrice)};SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[A1] AS [C1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],MIN([Extent1].[UnitPrice]) AS [A1]FROM [dbo].[Product] AS [Extent1]GROUP BY [Extent1].[CategoryID]) AS [GroupBy1]4. 平均值var expr = from p in context.Productsgroup p by p.CategoryID into gselect new{g.Key,AverageUnitPrice = g.Average(p => p.UnitPrice)};SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[A1] AS [C1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],AVG([Extent1].[UnitPrice]) AS [A1]FROM [dbo].[Product] AS [Extent1]GROUP BY [Extent1].[CategoryID]) AS [GroupBy1]5. 求和var expr = from p in context.Productsgroup p by p.CategoryID into gselect new{g.Key,TotalUnitPrice = g.Sum(p => p.UnitPrice)};SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[A1] AS [C1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],SUM([Extent1].[UnitPrice]) AS [A1]FROM [dbo].[Product] AS [Extent1]GROUP BY [Extent1].[CategoryID]) AS [GroupBy1]6. 计数var expr = from g infrom p in context.Productsgroup p by p.CategoryIDselect new{CategoryID = g.Key,ProductsNumber = g.Count()};var expr = from p in context.Productsgroup p by p.CategoryID into gselect new{g.Key,ProductNumber = g.Count()};var expr = context.Products.GroupBy(p => p.CategoryID).Select(g => new{CategoryID = g.Key,ProductNumber = g.Count()});SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[A1] AS [C1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],COUNT(1) AS [A1]FROM [dbo].[Product] AS [Extent1]GROUP BY [Extent1].[CategoryID]) AS [GroupBy1]var expr = from p in context.Productsgroup p by p.CategoryID into gselect new{g.Key,ProductNumber = g.Count(p => p.UnitsInStock > 0) };7. Where限制var expr = from p in context.Productsgroup p by p.CategoryID into gwhere g.Count() > 10select new{g.Key,ProductNumber = g.Count()};SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[A2] AS [C1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],COUNT(1) AS [A1],COUNT(1) AS [A2]FROM [dbo].[Product] AS [Extent1]GROUP BY [Extent1].[CategoryID]) AS [GroupBy1]WHERE [GroupBy1].[A1] > 108. 多列分组var expr = from p in context.Productsgroup p by new{p.CategoryID,p.Discontinued}into gselect new{g.Key,ProductNumber = g.Count()};SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[K3] AS [C1],[GroupBy1].[K2] AS [Discontinued],[GroupBy1].[A1] AS [C2]FROM ( SELECT[Extent1].[K1] AS [K1],[Extent1].[K2] AS [K2],[Extent1].[K3] AS [K3],COUNT([Extent1].[A1]) AS [A1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],[Extent1].[Discontinued] AS [K2],1 AS [K3],1 AS [A1]FROM [dbo].[Product] AS [Extent1]) AS [Extent1]GROUP BY [K1], [K2], [K3]) AS [GroupBy1]var expr = from p in context.Productsgroup p by new{p.CategoryID,p.Discontinued}into gselect new{g.Key.CategoryID,ProductNumber = g.Count()};SELECT[GroupBy1].[K1] AS [CategoryID],[GroupBy1].[A1] AS [C1]FROM ( SELECT[Extent1].[CategoryID] AS [K1],[Extent1].[Discontinued] AS [K2],COUNT(1) AS [A1]FROM [dbo].[Product] AS [Extent1]GROUP BY [Extent1].[CategoryID], [Extent1].[Discontinued]) AS [GroupBy1]9. 表达式var expr = from p in context.Productsgroup p by new{Criteria = p.UnitPrice > 10m}into gselect new{g.Key,ProductNumber = g.Count()};语句描述:使⽤Group By返回两个产品序列。
.NET4.0 LINQ 向数据库中插入数据
{
BookName="XML基础教程与实验指导",
writer="王海峰",
price=56,
};
data.BookInfo.InsertOnSubmit(Book);
data.SubmitChanges();
var s = from n in data.BookInfo where n.BookName == "XML基础教程与实验指导" select n; //执行查询
</div>
</form>
</body>
</html>
文件名:LinqInsert.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
添加了对象后,LINQ to SQL就需要额外的一步,来调用数据上下文对象的SubmitChanges方法,调用这个方法会告诉LIQN执行Insert操作。
下面是一个使用LINQ to SQL语句向数据库中插入数据的实例,代码如下所示。
文件名:LinqInsert.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqInsert.aspx.cs" Inherits="LinqInsert" %>
using System.Web.UI.WebControls;
