LINQ to SQL语法及实例大全
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)";。
一步一步学Linq to sql

意义不是很大,纯粹解决机械劳动。编译器自动为你生成get、set操作以及字段,并且你不能使用字段也不能自定义get、set操作,不过你可以分别定义get和set的访问级别。
对象初始化器
publicclassPerson
{
publicstringusername {get;set; }
Table<Customer> Customers = ctx.GetTable<Customer>();
GridView1.DataSource =fromcinCustomerswherec.CustomerID.StartsWith("A")selectnew{顾客ID=c.CustomerID,顾客名=,城市=c.City};
Console.WriteLine("username:{0} age:{1}", ername, data.age);
匿名类型允许开发人员定义行内类型,无须显式定义类型。常和var配合使用,var用于声明匿名类型。定义一个临时的匿名类型在LINQ查询句法中非常常见,我们可以很方便的实现对象的转换和投影。
今天就说到这里,再见!
DataContext与实体
DataContext
DataContext类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。
DataContext提供了以下一些使用的功能:
?以日志形式记录datacontext生成的sql?执行sql包括查询和更新语句?创建和删除数据库datacontext是实体和数据库之间的桥梁那么首先我们需要定义映射到数据表的实体
第12章 LINQ to SQL数据

融智技术学院
12.4.1 基本查询
1.Where语法 本章之前所有实例都采用单一条件的简单条件查询。LINQ中的 Where语句支持或者“!!”、并且“&&”的逻辑运算。 2.Select语句 Select语句就是将实体类部分(或全都)字段进行投影,并创建 另一个新数据表对象。 3.Distinct语句 Distinct语句主要用于查询显示数据对象中非重复元素。 4.First、Last、ElementAt语句 First语句用于查询数据对象中第一个对象数据,相当于SQL语 句中的TOP 1。Last语句用于查询数据对象中最后一个对象数据。 ElementAt(init i)语句用于查询数据对象中指定位置的对象数据。
融智技术学院
12.2.5 执行 执行SQL查询 查询
LINQ to SQL可以实现90%以上的SQL查询。但由于 LINQ to SQL要转换为SQL查询,才可以查询操作关系型 数据库。对于一些较为复杂数据查询,直接通过SQL查询 的效率比LINQ查询更好。因此,DataContext类型也提供 了直接执行SQL语句的功能。下面通过实例来演示 DataContext类实现直接执行SQL语句的功能。
融智技术学院
12.2.6 创建强类型 创建强类型DataContext
创建强类型DataContext,就是把实体类、DataContext 的构造函数封装为DataContext的成员与方法。经过这样的封 装后,当创建强类型DataContext的一个实例与数据库连接, 就可以自动把数据表映射连接到相应的实体类,进而可以在 程序中通过“.”直接访问实体类的属性及方法。
融智技术学院
12.2.1 搭建开发环境
前面已经说过,LINQ to SQL是一个项目组件。首 先应该将其添加为网站引用,具体操作步骤如下所示。
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体验(9)——LINQ_to_SQL语句之Insert、Update、Delete操作

Address = c1.Address, City = c1.City, CompanyName = panyName, ContactName = c1.ContactName, ContactTitle = c1.ContactTitle, Country = c1.Country, CustomerID = c1.CustomerID, Fax = c1.Fax, Phone = c1.Phone, PostalCode = c1.PostalCode, Region = c1.Region }; Customer tempcust = tempdb.Customers.Single(c => c.CustomerID == "ANTON"); foreach (Order o in tempcust.Orders) { deserializedOrders.Add(new Order {
foreach (var p in q) {
p.UnitPrice += 1.00M; } db.SubmitChanges();
Delete
1.简单形式
说明:调用 DeleteOnSubmit 方法即可。
OrderDetail orderDetail = db.OrderDetails.First (c => c.OrderID == 10255 && c.ProductID == 36);
Order order = db.Orders.First(x => x.OrderID == 10248); OrderDetail od =
LinqtoSQL语法整理(子查询in操作join)

LinqtoSQL语法整理(⼦查询in操作join)⼦查询描述:查询订单数超过5的顾客信息查询句法:var ⼦查询 = from c in ctx.Customerswhere(from o in ctx.Orders group o by o.CustomerID into o where o.Count() > 5 select o.Key).Contains(c.CustomerID)select c;in 操作描述:查询指定城市中的客户查询句法:var in操作 = from c in ctx.Customerswherenewstring[] { "Brandenburg", "Cowes", "Stavern" }.Contains(c.City)select c;Join描述:内连接,没有分类的产品查询不到查询句法:var innerjoin = from p in ctx.Productsjoin c in ctx.Categorieson p.CategoryID equals c.CategoryIDselect p.ProductName;描述:外连接,没有分类的产品也能查询到查询句法:var leftjoin = from p in ctx.Productsjoin c in ctx.Categorieson p.CategoryID equals c.CategoryIDinto profrom x in pro.DefaultIfEmpty()select p.ProductName;简单形式:var q =from p in db.Productsgroup p by p.CategoryID into gselect g;语句描述:使⽤Group By按CategoryID划分产品。
说明:from p in db.Products 表⽰从表中将产品对象取出来。
第三章LINQ TO SQL高级查询

•
高级查询
– –
增删改方式 • • • 增加数据
– – – 一个对象,一对多
删除数据
一个对象,主从关系
更新数据
一个对象,多条记录,多表更新
增删改方式
新增数据
– –
一个对象 一对多
新增方式 新增一个对象:
var stu = new Model.stuInfo { stuNo="s25308", stuName="足下 足下", 足下 stuAge=20, stuSex="男", 男 stuClass=2 }; //保存到对象集合 保存到对象集合 db.stuInfo.InsertOnSubmit(stu); db.SubmitChanges();
从数据库中删除一个对象
//从表 从表 var stu = from s in db.stuInfo 增删改方式 where s.stuClass == 3 select s; 删除主从表条: //主表 主表 var classic = db.classic.First(c => c.classID == 3); //先删除从表数据 先删除从表数据 foreach (var s in stu) { //先删除学生成绩表对应学号的学生 先删除学生成绩表对应学号的学生 var score = (from sc in db.stuMarks where先删除从表数据,再删除主表数据 sc.stuNo == s.stuNo select sc).First(); db.stuMarks.DeleteOnSubmit(score); db.stuInfo.DeleteOnSubmit(s); } //在删除主表 在删除主表 db.classic.DeleteOnSubmit(classic); //提交 提交 db.SubmitChanges();
LinQtoSQL用法详解

LinQtoSQL⽤法详解LinQ是指集成化查询语⾔,通过映射将内的表名变为C#的类名,将列名作为属性名,将表的关系作为类的成员对象。
O--M--R O-Object对象R-Relation关系M-Mapping映射LinQ包括:LinQ to SQL,针对SQL的查询,它是⼀个带有可视化的操作界⾯的ORM⼯具。
LinQ to Object,⽤来实现对内存中集合对象的查询。
LinQ to DataSet,对强类型化或弱类型化的DataSet或独⽴的DataTable进⾏查询。
LinQ to Entity,对实体框架中EDM定义的实体集合进⾏查询。
(⼀):LinQ to SQL第⼀步:建⽴LinQ2SQL类添加⼀个新建项,选择LinQ to SQL,将⽤到的表拖进来。
第⼆步:实例化上下⽂对象,基本所有操作都是通过上下⽂对象来进⾏的。
MyDBDataContext context = new MyDBDataContext();第三步:操作⼀、增加数据:1.造⼀个要添加的数据对象:Info data = new Info();data.Code = "p211"; = "⽯头";data.Sex = false;data.Nation = "N001";data.Birthday = new DateTime(1990, 1, 2);2.在上下⽂中注册上⾯新造的对象。
.InsertOnSubmit(data);3.提交执⾏context.SubmitChanges();⼆、删除:1. 找出要删除的数据MyDBDataContext context = new MyDBDataContext();var q = .Where(p => p.Code == "p003");2. 删除注册if (q.Count() > 0){Info data = q.First();//注册context.Work.DeleteAllOnSubmit(data.Work);context.Family.DeleteAllOnSubmit(data.Family);.DeleteOnSubmit(data);}3. 提交执⾏context.SubmitChanges();三、修改:1. 找出要修改的数据MyDBDataContext context = new MyDBDataContext();var q = .Where(p=>p.Code == "p001");2. 改,不⽤注册if (q.Count() > 0){Info data = q.First();//改 = "胡⽣";data.Nation = "n001";data.Sex = false;}3. 提交执⾏context.SubmitChanges();四、查询:1.查所有MyDBDataContext context = new MyDBDataContext();//所有⼈员var q = ;//var q = from p in select p;//显⽰foreach(Info data in q){//data.Nation1:当前⼈员对应的民族对象。
【IT专家】简单的linq to sql 的例子 ,实现了增删改查

简单的linq to sql 的例子,实现了增删改查2011/03/03 575 自己先要建立一个名为bbs的数据库里面要建立一个名为linqtoTest的表。
在添加项目中添加linq to sql 类,再把资源管理器打开,新建连接,找到你建立的那个数据库。
把那个表拖到 那个linq to sql 类中。
就行了。
using System;using System.Data.SqlClient;using System.Data;using System.Linq;using System.Web.UI.WebControls;using System.Data.Linq; public partial class linq_boundfield_ : System.Web.UI.Page{ linqtoTestDataContext db_Test = new linqtoTestDataContext(); protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { // getDatabind1(); getDatabind2(); } } /// summary /// 这是用我们平常/// 的方法来绑定数据/// /summary //void getDatabind1() //{ // SqlConnection con = DB.createsql(); // con.Open(); // string sql = “select * from LinqtoTest”; // SqlCommand cmd = new SqlCommand(sql, con); // SqlDataAdapter sda = new SqlDataAdapter(cmd); // DataSet ds = new DataSet(); // sda.Fill(ds, “linqtoTest”); // this.GridView1.DataSource = ds.Tables[“linqtoTest”].DefaultView; // this.GridView1.DataBind(); //} //这是用linq来绑定数据 void getDatabind2() { //linqtoTestDataContext db_Test = new linqtoTestDataContext(); this.GridView1.DataSource = db_Test.LinqtoTest;。
asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析

本文实例讲述了使用LINQ to SQL连接数据库及SQL操作语句用法。
分享给大家供大家参考,具体如下:LINQ简介LINQ:语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。
它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
LINQ是一门查询语言,和SQL一样,通过一些关键字的组合,实现最终的查询。
LINQ的分类LINQ to ObjectLINQ to XMLLINQ to SQLLINQ to DataSetLINQ to 命名空间为System.Linq;LINQ查询语法:from 临时变量in 集合对象或数据库对象where 条件表达式[orderby条件][group by 条件]select 临时变量中被查询的值例:from c in Student select c;假设Student是一个数据库表对应的一个实体类则查询语句为:from c in Student select c;//整表查询from c in Student where =="张三" select c;//查询姓名为张三的所有信息其中C为临时变量,可任意取。
查询几个字段1、查询student表中的几个字段代码如下:var query=from c in student select new {c.number,,c.age};2、查询student表中的几个字段,并重新设定列名代码如下:var query=from c in student select new {学号=c.number,姓名=, 年领=c.age};注意事项linq查询语句必须以from子句开始,以select 子句结束。
Linq是在.NET Framework 3.5 中出现的技术,所以在创建新项目的时候必须要选3.5或者更高版本,否则无法使用。
LINQ基本语法及其示例

LINQ基本语法及其示例说明:1、在未作任何说明的情况下,以下用到的db变量都是DataContext的实例对象,声明语法类似如下:using (BP_DataClassesDataContext db = new BP_DataClassesDataContext(ConnectionStrings.GetInstance("ZJ").Con)) {//Code}2、默认q为Iqueryable类型变量简单查询:var q = from p in db.view_PreTestResultAuditListselect p;简单条件查询:方式一:直接使用where关键字var q = from c in db.view_PrTestListwhere c.FTestmanID.Equals(UserContext.CurrentUser.FID)select c;方式二:使用lambda 表达式var q = db.TOriInfoAutoMemory.Where(c => c.FSampleName == sampleName);使用&&和|| 带代替And或Or关键字:var entity = db.TSampleOriginalInfo.FirstOrDefault(c => c.FFromID.Equals(fromID) && c.FSampleID.Equals(sampleID));like模糊条件查询://使用C#中的Contains关键字代替SQL中的like关键字q = q.Where(c => c.FTaskCode.Contains());In包含查询:/// <param name="certificateIDs"> string[] </param>var certi = (from c in db.TMSCertificatewhere certificateIDs.ToList().Contains(c.FID.ToString())select c).ToList();等价于:select * from TMSCertificate where FID in /* certificateIDs */Skip和Take实现分页查询:var q = from c in db.view_PrTestListwhere c.FTestmanID.Equals(UserContext.CurrentUser.FID)select c;twi.data = (q.Skip(paging.startIndex).Take(paging.pageSize)).ToList();//其中startIndex:跳过的系列中指定的条数// pageSize:每页显示条数(记录数)Distinct方法去除重复:var p = (from c in dc.TSampleOriginalInfowhere sampleIDs.Contains(c.FSampleID.ToString())select new{c.FFromID,查询指定列使new构造集合:var p = (from c in dc.TSampleOriginalInfowhere sampleIDs.Contains(c.FSampleID.ToString())select new{c.FFromID,c.FName}).Distinct();join连接查询:详见下面的【join查询实例】//此处省略……FirstOrDefault查询满足条件的第一条记录或不存在是返回null,不发生异常:foreach (var fromID in fromIDs){var entity = db.TSampleOriginalInfo.FirstOrDefault(c => c.FFromID.Equals(fromID) && c.FSampleID.Equals(sampleID));if (entity != null){entities.Add(entity);}}LINQ to SQL 的重要方法:SubmitChanges方法:无论您对对象做了多少项更改,都只是在更改内存中的副本。
Linq to sql 实现多条件的动态查询

Linq to sql 实现多条件的动态查询(方法一)多条件动态查询在开发中太常见了,使用sql语句拼接很容易实现,但是在使用linq 的时候我却觉得很麻烦,思来想去,其实不然,linq 实现多条件动态查询一样可以变的很简单。
话不多说,直接上例子,供大家参考。
根据5个动态条件查询:[csharp]view plaincopyprint?1./// <summary>2./// Linq to sql 多字段动态查询3. /// </summary>4./// <returns></returns>5.private List<TVacant> ViewBinding(ModelDataContext db,string fyno,string brd,string area,string city,string pos)6.{7. Expression<Func<TVacant, bool>> expr = n => GetCondition(n,fyno,brd,area,city,pos);8. var xQuery = acant.Where<TVacant>(pile());9. return xQuery.ToList<TVacant>();10.}11.private bool GetCondition(TVacant tb,string fyno,string brd,string area,string city,string pos)12.{13. bool boolResult = true;14. if (!String.IsNullOrEmpty(fyno))15. {16. boolResult &= tb.fy_no == fyno;17. }18. if (!String.IsNullOrEmpty(brd))19. {20. boolResult &= tb.brd_no == brd;21. }22. if (!String.IsNullOrEmpty(area))23. {24. boolResult &= tb.area_no == area;25. }26. if (!String.IsNullOrEmpty(city))27. {28. boolResult &= tb.city_no == city;29. }30. if (!String.IsNullOrEmpty(pos))31. {32. boolResult &= tb.pos_no == pos;33. }34. return boolResult;35.}LINQ to SQL语句(23)之动态查询生成的SQL语句为:下面一张截图显示了怎么动态生成动态查询的过程生成的SQL语句为:4.Union下面的例子使用表达式树动态查询顾客和雇员同在的城市。
asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析

本文实例讲述了使用LINQ to SQL连接数据库及SQL操作语句用法。
分享给大家供大家参考,具体如下:LINQ简介LINQ:语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。
它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
LINQ是一门查询语言,和SQL一样,通过一些关键字的组合,实现最终的查询。
LINQ的分类LINQ to ObjectLINQ to XMLLINQ to SQLLINQ to DataSetLINQ to 命名空间为System.Linq;LINQ查询语法:from 临时变量in 集合对象或数据库对象where 条件表达式[orderby条件][group by 条件]select 临时变量中被查询的值例:from c in Student select c;假设Student是一个数据库表对应的一个实体类则查询语句为:from c in Student select c;//整表查询from c in Student where =="张三" select c;//查询姓名为张三的所有信息其中C为临时变量,可任意取。
查询几个字段1、查询student表中的几个字段代码如下:var query=from c in student select new {c.number,,c.age};2、查询student表中的几个字段,并重新设定列名代码如下:var query=from c in student select new {学号=c.number,姓名=, 年领=c.age};注意事项linq查询语句必须以from子句开始,以select 子句结束。
Linq是在.NET Framework 3.5 中出现的技术,所以在创建新项目的时候必须要选3.5或者更高版本,否则无法使用。
LINQ to SQL

LINQ查询的目的是从指定的数据源中查询满足符合特定条件的数据元素,并且通过根据需要对这些查询的元素进行排序、连接等操作。
所以LINQ查询包含如下几个主要元素:•数据源:数据源表示LINQ查询将从哪里查找数据,它通常是一个或多个数据集,每个数据集包含一系列的元素。
数据集是一个类型为IEnumerable<T>或IQueryable<T>的对象,可以对它进行枚举,遍历每一个元素。
此外,它的元素可以是任何数据类型,所以可以表示任何数据的集合。
•目标数据:数据源中的元素并不定是查询所需要的结果。
目标数据用来指定查询的具体想要的是什么数据。
在LINQ中,它定义了查询结果数据集中元素的具体类型。
•筛选条件:筛选条件定义了对数据源中元素的过滤条件。
只有满足条件的元素才作为查询结果返回。
筛选条件可以是简单的逻辑表达式表示,也可以用具有复杂逻辑的函数来表示。
•附加操作:附加操作表示一些其它的具体操作。
比如,对查询结果进行分组等。
其中,数据源和目标数据库是LINQ查询的必备元素,筛选条件和附加操作是可选元素。
2.用from子句指定数据源每个LINQ查询都以from子句开始,from子句包括以下两个功能。
•指定查询将采用数据源。
•定义一个本地变量,表示数据源中单个元素。
单个from子句的编写格式如下所示。
其中dataSource表示数据源,localVar 表示单个元素。
from localVar in dataSource3.用select子句指定目标数据select子句指定在执行查询时产生结果的数据集中元素的类型,它的格式如下所示:select element4.用where子句指定筛选条件在LINQ中,用where子句指定查询的过滤条件,它的格式如下:where expression其中,express是一个逻辑表达式,返回布尔值“真”或“假”在LINQ查询中,还可以使用多个并列的where子句来进行多个条件过滤。
LINQ体验(13)——LINQ to SQL语句之运算符转换和ADO.NET与LINQ to SQL

运算符转换1.AsEnumerable:将类型转换为泛型 IEnumerable使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数。
在此示例中,LINQ to SQL(使用默认泛型 Query)会尝试将查询转换为 SQL 并在服务器上执行。
但 where 子句引用用户定义的客户端方法 (isValidProduct),此方法无法转换为 SQL。
解决方法是指定 where 的客户端泛型 IEnumerable<T> 实现以替换泛型 IQueryable<T>。
可通过调用 AsEnumerable<TSource>运算符来执行此操作。
var q =from p in db.Products.AsEnumerable()where isValidProduct(p)select p;语句描述:这个例子就是使用AsEnumerable以便使用Where的客户端IEnumerable实现,而不是默认的IQueryable将在服务器上转换为SQL并执行的默认Query<T>实现。
这很有必要,因为Where子句引用了用户定义的客户端方法isValidProduct,该方法不能转换为SQL。
2.ToArray:将序列转换为数组使用 ToArray <TSource>可从序列创建数组。
var q =from c in db.Customerswhere c.City == "London"select c;Customer[] qArray = q.ToArray();语句描述:这个例子使用 ToArray 将查询直接计算为数组。
3.ToList:将序列转换为泛型列表使用 ToList<TSource>可从序列创建泛型列表。
下面的示例使用 ToList<TSource>直接将查询的计算结果放入泛型 List<T>。
深入理解LINQtoSQL生成的SQL语句

深⼊理解LINQtoSQL⽣成的SQL语句Ø简介在 C# 中与数据交互最常⽤的语句就是 LINQ 了,⽽ LINQ to SQL 是最直接与数据库打交道的语句,它可以根据 LINQ 语法⽣成对应的 S QL 语句,在数据库中去执⾏。
本⽂主要研究什么样LINQ 语句会⽣成什么样SQL 语句,从⽽确保编写LINQ 语句时,便知道该语句会执⾏什么样的SQL 语句,得到什么结果,这是很有必要的。
因为很多时候会考虑到SQL 效率问题,和数据是否有误等问题。
主要包括:1.插⼊数据2.判断记录是否存在3.左连接情况下,判断某字段是否为 null 的写法4.连接查询关联不同类型(string & int)字段5.关联表(⼀对多关系),⼀条语句查询主表与⼦表数据6.使⽤ IQueryable<T> 类型的变量,嵌⼊ LINQ 查询语法中7.常见的查询技巧8.使⽤对象集合进⾏连接查询1.插⼊数据1)LINQ 语句DataContext.CustomerTodos.Add(entity);DataContext.SaveChanges();2)⽣成 SQLexec sp_executesql N'INSERT [dbo].[Crm_CustomerTodo]([CustomerId], [ProductId], [CreateTime], [TodoTime], [UpdateTime], [ExpireTime], [To doType], [State], [Result], [Source], [VisitInfoId], [CppId], [AuditorId], [AuditorTime], [AuditorState], [AuditorDesc], [SalesUserId], [CouponItemNo]) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, NULL, @10, NULL, NULL, NULL, NULL, NULL, @11)SELECT [Id]FROM [dbo].[Crm_CustomerTodo]WHERE @@ROWCOUNT > 0 AND [Id] = scope_identity()',N'@0 bigint,@1 bigint,@2 datetime2(7),@3 datetime2(7),@4 datetime2(7),@5 datetim e2(7),@6 int,@7 int,@8 int,@9 int,@10 int,@11 nvarchar(max) ',@0=80242,@1=0,@2='2018-10-19 13:52:07.8299645',@3='2018-10-19 13:52:07.8299645',@4='2018-10-19 13:52:07.8299645',@5='2018-10-28 23:59:59',@6=6,@7=1,@8=0,@9=1,@10=2,@11=N'4568'2.判断记录是否存在1)LINQ 语句DataContext.CustomerTodos.Any(o => o.TodoType == todoType && o.CustomerId == model.CustomerId);2)⽣成 SQLexec sp_executesql N'SELECTCASE WHEN ( EXISTS (SELECT1 AS [C1]FROM [dbo].[Crm_CustomerTodo] AS [Extent1]WHERE ([Extent1].[TodoType] = @p__linq__0) AND ([Extent1].[CustomerId] = @p__linq__1))) THEN cast(1 as bit) WHEN ( NOT EXISTS (SELECT1 AS [C1]FROM [dbo].[Crm_CustomerTodo] AS [Extent2]WHERE ([Extent2].[TodoType] = @p__linq__0) AND ([Extent2].[CustomerId] = @p__linq__1))) THEN cast(0 as bit) END AS [C1]FROM ( SELECT 1 AS X ) AS [SingleRowTable1]',N'@p__linq__0 int,@p__linq__1 bigint',@p__linq__0=6,@p__linq__1=802423.左连接情况下,判断某字段是否为 null 的写法Ø说明:UserInfo.CustomerId 关联 Customer.Id,为多对⼀的关系。
LINQ体验(6)——LINQ to SQL语句之Join和Order By

LINQ体验(6)——LINQ to SQL语句之Join和Order ByJoin操作适用场景:在我们表关系中有一对一关系,一对多关系,多对多关系等。
对各个表之间的关系,就用这些实现对多个表的操作。
说明:在Join操作中,分别为Join(Join查询), SelectMany(Select一对多选择)和Gro upJoin(分组Join查询)。
该扩展方法对两个序列中键匹配的元素进行inner join操作SelectMany说明:我们在写查询语句时,如果被翻译成SelectMany需要满足2个条件。
1:查询语句中没有join和into,2:必须出现EntitySet。
在我们表关系中有一对一关系,一对多关系,多对多关系等,下面分别介绍一下。
1.1 to Many关系:语句描述:Customers与Orders是一对多关系。
即Orders在Customers类中以Enti tySet形式出现。
所以第二个from是从c.Orders而不是db.Orders里进行筛选。
语句描述:这一句使用了p.Supplier.Country条件,间接关联了Supplier表。
生成SQL 语句为:2.Many to Many关系:说明:多对多关系一般会涉及三个表(如果有一个表是自关联的,那有可能只有2个表)。
这一句语句涉及Employees, EmployeeTerritories, Territories三个表。
它们的关系是1:M:1。
Employees和Territories没有很明确的关系。
语句描述:这条生成SQL语句为:3.自关联关系:生成SQL语句为:GroupJoin像上面所说的,没有join和into,被翻译成SelectMany,同时有join和into时,那么就被翻译为GroupJoin。
在这里into的概念是对其结果进行重新命名。
1.Two way join说明:在一对多关系中,左边是1,它每条记录为c(from c in db.Customers),右边是Many,其每条记录叫做o ( join o in db.Orders ),每对应左边的一个c,就会有一组o,那这一组o,就叫做orders,也就是说,我们把一组o命名为orders,这就是int o用途。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LINQ To SQL语法及实例大全目录LINQ to SQL语句(1)之Where .................................................................................................................... - 4 -Where操作......................................................................................................................................... - 4 -1.简单形式:.............................................................................................................................. - 4 -2.关系条件形式:...................................................................................................................... - 4 -3.First()形式: ............................................................................................................................ - 5 -LINQ to SQL语句(2)之Select/Distinct ........................................................................................................ - 5 -1.简单用法:...................................................................................................................................... - 5 -2.匿名类型形式:.............................................................................................................................. - 5 -3.条件形式:...................................................................................................................................... - 6 -4.指定类型形式:.............................................................................................................................. - 6 -5.筛选形式:...................................................................................................................................... - 6 -6.shaped形式(整形类型):............................................................................................................... - 6 -7.嵌套类型形式:.............................................................................................................................. - 7 -8.本地方法调用形式(LocalMethodCall): ........................................................................................ - 7 -9.Distinct形式:................................................................................................................................. - 8 -LINQ to SQL语句(3)之Count/Sum/Min/Max/Avg ..................................................................................... - 8 -1.简单形式:...................................................................................................................................... - 8 -2.带条件形式:.................................................................................................................................. - 8 -1.简单形式:.............................................................................................................................. - 8 -2.映射形式:.............................................................................................................................. - 8 -3.元素:............................................................................................................................................ - 9 -1.简单形式:.............................................................................................................................. - 9 -2.映射形式:.............................................................................................................................. - 9 -3.元素:.............................................................................................................................................. - 9 -1.简单形式:.............................................................................................................................. - 9 -2.映射形式:.............................................................................................................................. - 9 -3.元素:...................................................................................................................................... - 9 -LINQ to SQL语句(4)之Join ....................................................................................................................... - 10 -Join操作符 ............................................................................................................................................... - 10 -1.一对多关系(1 to Many): ............................................................................................................. - 10 -2.多对多关系(Many to Many): ...................................................................................................... - 10 -3.自联接关系:................................................................................................................................ - 11 -1.双向联接(Two way join): .................................................................................................... - 11 -2.三向联接(There way join):.................................................................................................. - 12 -3.左外部联接(Left Outer Join):.............................................................................................. - 12 -4.投影的Let赋值(Projected let assignment):....................................................................... - 13 -5.组合键(Composite Key): ..................................................................................................... - 13 -6.可为null/不可为null的键关系(Nullable/Nonnullable Key Relationship): ....................... - 13 -LINQ to SQL语句(5)之Order By ............................................................................................................... - 14 -Order By操作.................................................................................................................................... - 14 -1.简单形式........................................................................................................................................ - 14 -2.带条件形式.................................................................................................................................... - 14 -3.降序排序........................................................................................................................................ - 14 -4.ThenBy ............................................................................................................................................ - 14 -5.ThenByDescending ......................................................................................................................... - 15 -6.带GroupBy形式............................................................................................................................ - 15 -LINQ to SQL语句(6)之Group By/Having .................................................................................................. - 16 -1.简单形式:.................................................................................................................................... - 16 -2.Select匿名类: ............................................................................................................................. - 16 -3.最大值............................................................................................................................................ - 17 -4.最小值............................................................................................................................................ - 17 -5.平均值............................................................................................................................................ - 18 -6.求和................................................................................................................................................ - 18 -7.计数................................................................................................................................................ - 18 -8.带条件计数.................................................................................................................................... - 18 -9.Where限制 .................................................................................................................................... - 18 -10.多列(Multiple Columns) ............................................................................................................... - 19 -11.表达式(Expression) ...................................................................................................................... - 19 -LINQ to SQL语句(7)之Exists/In/Any/All/Contains ................................................................................... - 19 -Exists/In/Any/All/Contains操作符.................................................................................................... - 19 -Any ............................................................................................................................................. - 19 -1.简单形式:............................................................................................................................ - 19 -2.带条件形式:........................................................................................................................ - 20 -All ....................................................................................................................................................... - 20 -Contains ............................................................................................................................................. - 20 -1.包含一个对象:.................................................................................................................... - 20 -2.包含多个值:........................................................................................................................ - 21 -LINQ to SQL语句(8)之Concat/Union/Intersect/Except ........................................................................... - 21 -Concat/Union/Intersect/Except操作 ............................................................................................... - 21 -Concat(连接)................................................................................................................................ - 21 -1.简单形式:............................................................................................................................ - 21 -2.复合形式:............................................................................................................................ - 21 -Union(合并) ................................................................................................................................. - 22 -Intersect(相交)............................................................................................................................. - 22 -Except(与非) ................................................................................................................................ - 22 -LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods ................................................................ - 22 -Top/Bottom操作 .............................................................................................................................. - 22 -Take.................................................................................................................................................... - 22 -Skip .................................................................................................................................................... - 23 -TakeWhile .......................................................................................................................................... - 23 -SkipWhile ........................................................................................................................................... - 23 -Paging(分页)操作 ........................................................................................................................ - 23 -1.索引........................................................................................................................................ - 23 -2.按唯一键排序........................................................................................................................ - 23 -SqlMethods操作 .............................................................................................................................. - 23 -Like ............................................................................................................................................ - 23 -已编译查询操作(Compiled Query) .......................................................................................... - 24 -LINQ to SQL语句(10)之Insert .................................................................................................................. - 24 -插入(Insert)1.简单形式 .................................................................................................................... - 24 -2.一对多关系.................................................................................................................................... - 24 -3.多对多关系.................................................................................................................................... - 25 -4.使用动态CUD重写(Override using Dynamic CUD) ...................................................................... - 25 -LINQ to SQL语句(11)之Update ............................................................................................................... - 26 -更新(Update) .................................................................................................................................... - 26 -1.简单形式................................................................................................................................ - 26 -2.多项更改................................................................................................................................ - 26 -LINQ to SQL语句(12)之Delete和使用Attach ........................................................................................ - 26 -2.一对多关系.................................................................................................................................... - 26 -3.推理删除(Inferred Delete) ............................................................................................................. - 27 -使用Attach更新(Update with Attach) ............................................................................................. - 27 -LINQ to SQL语句(13)之开放式并发控制和事务 .................................................................................... - 29 -Simultaneous Changes开放式并发控制 ......................................................................................... - 29 -开放式并发(Optimistic Concurrency) ............................................................................................... - 29 -1.Implicit(隐式).................................................................................................................... - 30 -2.Explicit(显式) .................................................................................................................... - 31 -LINQ to SQL语句(14)之Null语义和DateTime ....................................................................................... - 31 -Null语义 ........................................................................................................................................... - 31 -1.Null ......................................................................................................................................... - 31 -2.Nullable<T>.HasValue ............................................................................................................. - 31 -日期函数........................................................................................................................................... - 32 -1.DateTime.Year ........................................................................................................................ - 32 -2.DateTime.Month .................................................................................................................... - 32 -3.DateTime.Day ......................................................................................................................... - 32 -LINQ to SQL语句(15)之String .................................................................................................................. - 32 -字符串(String) ............................................................................................................................. - 32 -1.字符串串联(String Concatenation) ........................................................................................ - 32 -2.String.Length .......................................................................................................................... - 32 -3.String.Contains(substring) ...................................................................................................... - 33 -4.String.IndexOf(substring)........................................................................................................ - 33 -5.String.StartsWith(prefix) ........................................................................................................ - 33 -6.String.EndsWith(suffix) .......................................................................................................... - 33 -7.String.Substring(start) ............................................................................................................ - 33 -8.String.Substring(start,length) ................................................................................................. - 33 -9.String.ToUpper() ..................................................................................................................... - 33 -10.String.ToLower() .................................................................................................................... - 34 -11.String.Trim() .......................................................................................................................... - 34 -12.String.Insert(pos,str) ............................................................................................................. - 34 -13.String.Remove(start) ............................................................................................................ - 34 -14.String.Remove(start,length) ................................................................................................. - 34 -15.String.Replace(find,replace) ................................................................................................. - 34 -LINQ to SQL语句(16)之对象标识 ............................................................................................................ - 34 -对象标识........................................................................................................................................... - 34 -对象缓存........................................................................................................................................... - 35 -LINQ to SQL语句(17)之对象加载 ............................................................................................................ - 35 -对象加载延迟加载........................................................................................................................... - 35 -预先加载:LoadWith方法 .............................................................................................................. - 36 -LINQ to SQL语句(18)之运算符转换 ........................................................................................................ - 36 -1.AsEnumerable:将类型转换为泛型IEnumerable ....................................................................... - 36 -2.ToArray:将序列转换为数组........................................................................................................ - 36 -3.ToList:将序列转换为泛型列表 ................................................................................................... - 37 -4.ToDictionary:将序列转化为字典................................................................................................ - 37 -LINQ to SQL语句(19)之与LINQ to SQL ................................................................................... - 37 -1.连接................................................................................................................................................ - 37 -2.事务................................................................................................................................................ - 38 -LINQ to SQL语句(20)之存储过程 ............................................................................................................ - 39 -1.标量返回........................................................................................................................................ - 39 -2.单一结果集.................................................................................................................................... - 39 -3.多个可能形状的单一结果集........................................................................................................ - 40 -5.带输出参数.................................................................................................................................... - 50 -LINQ to SQL语句(21)之用户定义函数 .................................................................................................... - 51 -1.在Select中使用用户定义的标量函数 ........................................................................................ - 51 -2.在Where从句中使用用户定义的标量函数 ............................................................................... - 52 -3.使用用户定义的表值函数............................................................................................................ - 53 -4.以联接方式使用用户定义的表值函数 ........................................................................................ - 54 -LINQ to SQL语句(22)之DataContext ....................................................................................................... - 54 -创建和删除数据库........................................................................................................................... - 54 -数据库验证....................................................................................................................................... - 57 -数据库更改....................................................................................................................................... - 57 -动态查询........................................................................................................................................... - 57 -日志................................................................................................................................................... - 58 -LINQ to SQL语句(23)之动态查询 ............................................................................................................ - 58 -1.Select .............................................................................................................................................. - 58 -2.Where ............................................................................................................................................. - 59 -LINQ to SQL语句(24)之视图 .................................................................................................................... - 61 -LINQ to SQL语句(25)之继承 .................................................................................................................... - 62 -1.一般形式................................................................................................................................ - 63 -2.OfType形式 ........................................................................................................................... - 63 -3.IS形式.................................................................................................................................... - 63 -4.AS形式................................................................................................................................... - 64 -5.Cast形式 ................................................................................................................................ - 64 -eAsDefault形式 ................................................................................................................. - 64 -7.插入新的记录........................................................................................................................ - 65 -LINQ to SQL语句(1)之WhereWhere操作适用场景:实现过滤,查询等功能。