一步步学LINQ to SQL(一)——LINQ to SQL入门
LINQ表左式中文教程
LINQ表左式中文教程LINQ初体验之LINQ to Object (3)一步一步学Linq to sql(一):预备知识 (9)一步一步学Linq to sql(二):DataContext与实体 (20)一步一步学Linq to sql(三):增删改 (34)一步一步学Linq to sql(四):查询句法.49 一步一步学Linq to sql(五):存储过程.81 一步一步学Linq to sql(六):探究特性 (101)一步一步学Linq to sql(七):并发与事务 (121)一步一步学Linq to sql(八):继承与关系 (136)一步一步学Linq to sql(九):其它补充 (159)一步一步学Linq to sql(十):分层构架的例子 (168)Linq To Xml学习 (183)Linq To Xml学习-1. 概述 (183)Linq To Xml学习-2 编程概述 (188)C# 2008 学习笔记- LINQ to XML (200)一、命名空间 (200)二、编程方式创建XML文档 (202)三、使用LINQ 查询创建XML文档 .. 205四、加载和解析XML内容 (206)六、遍历内存中的XML文档 (207)七、修改XML文档 (211)使用linq to xml 快速创建自己的Rss (212)LINQ初体验之LINQ to ObjectVS2008的发布,最激动人心的不过是LINQ的诞生。
What‘s LINQ? Language Integrated Query 是也。
说得再明白一些,这是编程语言的一种新特性,能够将数据查询语句集成到编程语言中。
目前,LINQ支持的语言有C# 和VB。
为啥会有LINQ,主要还是因为现在的数据格式越来越多,数据库、XML、数组、哈希表……每一种都有自己操作数据的方式,学起来费事费力。
于是,就有了LINQ诞生的理由——以一种统一的方式操作各种数据源,减少数据访问的复杂性。
图文结合教你用好LINQ to SQL
不过谈到.NET平台,ORM框架似乎相对混乱了点。
很多朋友问我的时候,往往会这样问:NHibernate、NBear和Castle该选择哪个?而当我反问:为什么不适用微软自带的Linq to SQL 呢?对方经常会迷茫和不解。
我觉得这是个很奇怪的现象。
依照我个人的实践,我认为当需要快速构建一个中小型项目时,Linq to SQL是一个很好的选择。
你至少有以下理由可以选择它:i. 它是微软自己的产品,和.NET平台有着天生的适应性。
如果你使用.NET Framework3.5和 VS2008开发环境,它本身就集成在里面了,同时VS2008对于Linq to SQL 给予了诸多方便的支持。
使用它,你不仅在开发和部署时不用考虑第三方库,更可以尽情享受VS2008带来的种种方便。
ii. 上手十分容易,使用十分轻松,通常,你不需要编写一行代码,也不用写任何XML 配置,完全通过可视化拖拽就能完成ORM层的构建。
iii. 功能丰富,使用便捷。
当轻松构建好ORM层后,你就可以更轻松的操纵数据库了。
Linq to SQL提供了丰富的功能,完全可以满足日常数据访问的需求。
使用方法也非常简单、灵活。
有这么好的理由,我真想不通为什么那么多人不愿去选择它。
我想来想去,也许有两个重要原因,一是把LINQ和Linq to SQL混为一谈了,二是受前段时间“LINQ已死”的误导,觉得微软已经抛弃Linq to SQL了。
关于这两点,我就不细说了,简略澄清一下:首先,LINQ是从.NET Framework3.0开始,.NET平台上引入的一种新式语言特性,狭义一点,你可以讲它理解成一种新式语法,主要是针对迭代数据操作的,所以,也许LINQ 叫做“数据迭代引擎(Data Iterative Engine)”更合适,之所以不着样命名,我想微软可能不愿意让自己产品的简写为“DIE”吧。
:-)而Linq to SQL是LINQ在数据库访问方面的一个应用框架,完全是两码事。
一步一步学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 to SQL快速上手 step by step
总结
希望能帮助大家快速上手Linq to Sql. 关于Linq to Sql,还有许多丰富的功能 和细节问题,篇幅原因不能详述,各位 可以参考相关资料.
�
Step2:建立LINQ to SQL Step2:建立LINQ Classes文件 Classes文件
数据建好后,我们需要建立LINQ to SQL Classes文件.这种文件是Linq to Sql框架的 主要文件,后面自动生成的实体类和ORM代码 都存在于这个文件中. 我们打开VS2008,新建一个C# Class Labrary 工程,名称为LinqToSqlDemo.Orm,建好后在 工程上单击右键,选择"Add"->"New Item", 在文件类型中选择"LINQ to SQL Classes", 文件名命名为"DataClasses.dbml",如图所 示
Insert操作 Insert操作 Insert用于向数据库添加记录.一 般情况下,使用"DataContext.表映射 集合.InsertOnSubmit(实体类)"的方式 就可以完成Insert操作.不过这里要注 意一点,由于Linq to Sql使用了"Unit of Work"模式,所以,对数据库的操作 不会mitChanges方法,所 有改动才会被提交到数据库.
Delete操作 Delete操作 Delete操作用于从数据库中删除记 录.表映射集合的DeleteOnSubmit方法 可以实现这个操作.这个方法需要一个 参数,就是要删除的实体类,这里不能 直接传个ID去删除,要首先通过ID找到 相应实体类,传给DeleteOnSubmit再删 除.当然最后不要忘了SubmitChanges.
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 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 to SQL
1-11
1-3
LINQ to SQL和
LINQ
LINQ查询基础 LINQ对象模型
LINQ to SQL 支持程序
DataSet/DataTable DataAdapter DataCommand DataConnection 数据库提供程序
多种类型数据库 SQL Server、Oracle、Access等
1-10
修改数据库记录
DataContext类作为对象模型和数据库模型之间的桥梁,在 提供读取数据库接口的同时还提供了数据库修改接口。通过 DataContext类修改数据通常包含以下4个步骤: • (1)创建对象关系模型,创建和数据库对应的 DataContext类型。 • (2)通过DataContext类提供的数据表对象获取数据记录 • (3)通过设置类的属性来修改记录的值。 • (4)通过DataContext类的SubmitChanges()方法将修 改后的数据提交到数据库。 例:将所有默认密码666666改为ABCDEF
1-5
LINQ to SQL查询执行流程
应用程序
LINQ to SQL
DataAdapter DataCommand DataConnection
数据库
LINQ 查询
SQL命令
查询结果
对象集合
DataSet DataReader
1-6
O/R设计器
Visual Studio 2010为开发人员提供了一套自动化的对象关系 设计器——O/R设计器。O/R设计器提供一个可视化设计界面, 通过向导自动创建基于数据库中对象的LINQ to SQL实体类和 关系,并且可以像编辑类图和数据库关系图那样编辑各个类、 成员等。 O/R设计器还提供了相关功能,用于将存储过程和函数映射到 DataContext方法以便返回数据和填充实体类。最后, O/R 设 计器提供了对实体类之间的继承关系进行设计的能力。 例:使用O/R设计器。
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 =
LINQ to SQL 数据上下文
LINQ to SQL 数据上下文1. 概述通过LINQ to SQL基础篇我们对LINQ to SQL有了一个概要的认识,本文我们来认识在LINQ to SQL 中处于非常重要地位的一个对象——DataContext(数据上下文),它位于System.Data.Linq命名空间下,是实体和数据库之间的一个桥梁。
DataContext主要提供了如下几个功能:A.记录生成的SQL语句,这对于我们调试LINQ to SQL时是非常有用的,可以通过查看记录的SQL语句,来分析LINQ to SQL在数据库中执行了什么。
B.执行SQL语句。
LINQ to SQL通过查询句法和Lambda表达式提供了强大的功能,能完成T-SQL 90%以上的功能,如果在开发中,遇到非常复杂的查询,无法用查询句法或者Lambda表达式来实现,你可以使用自己熟悉的T-SQL来完成。
C.创建、删除数据库。
在第一篇中我就说过,LINQ to SQL是一个轻量级的O/R Mapping,使用LINQ to SQL可以不用考虑数据库表之间的关系,直接考虑你的业务对象关系,设计好实体类之后,通过DataContext可以自动创建数据库。
2. 创建DataContext在DataContext中,提供了如下四种重载方式的构造函数,就是说我们可以通过四种方式来创建一个DataContext对象:Code1:public DataContext(IDbConnection connection);public DataContext(string fileOrServerOrConnection);public DataContext(IDbConnection connection, MappingSource mapping);public DataContext(string fileOrServerOrConnection, MappingSource mapping);我们经常使用的有两种:一是使用连接字符串,作为DataContext构造函数的参数:Code2public DataContext CreateDataContext(){DataContext db = new DataContext(@"Server=Esint-lhj\Sql2005;User Id=sa;Password=sql2005;Database=MSPetShop4");return db;}这里为了避免硬编码连接字符串,你也可以把连接字符串放在配置文件中。
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教程LINQTOSQL基础教程及学习笔记
LINQ TO SQL 学习笔记1. 预备知识 (3)1.1.Linq介绍 (3)1.2.隐含类型局部变量 (3)1.3.匿名类型 (4)1.4.扩展方法 (5)1.5.自动属性 (6)1.6.对象初始化器/集合初始化器 (6)mbda表达式与Lambda表达树 (7)1.8.查询句法 (9)2. DataContent与实体 (10)2.1.DataContent (10)2.2.实体类 (10)2.3.强类型DataContent (11)2.4.日志功能 (11)2.5.探究查询 (12)2.6.执行查询 (13)2.7.创建数据库 (13)2.8.使用DbDataReader数据源 (14)2.9.生成实体类 (14)3. 增删改 (15)3.1.插入(Insert) (15)3.2.更新(Update) (18)3.3.删除(Delete) (18)3.4.使用Attach更新(Update with Attach) (19)3.5.使用Attach更新和删除(Update and Delete with Attach) (21)4. 查询句法 (22)4.1.Select (22)4.2.Where (23)4.3.OrderBy (23)4.4.分页 (24)4.5.分组 (24)4.6.Distinct (25)4.7.Union (25)4.8.Contact (25)4.9.取相交项 (26)4.10.排除相交项 (26)4.11.子查询 (27)4.12.In操作 (27)4.13.Join (28)5. 存储过程 (28)5.1.普通存储过程 (28)5.2.带参数存储过程 (30)5.3.带返回值的存储过程 (30)5.4.多结果集存储过程 (30)5.5.使用存储过程新增/更新/删除数据 (31)6. 探究特性 (33)6.1.延迟执行 (33)6.2.DataLoadOptions (33)6.3.DataLoadOptions限制 (34)6.4.主键缓存 (35)6.5.DataContent隔离 (35)7. 并发与事务 (35)7.1.检测并发 (35)7.2.解决并发 (36)7.3.事务处理 (38)8. 其他 (40)Linq学习笔记(1.6)——ToArray、ToList、ToDictionary、OfType (40)1.预备知识1.1.Linq介绍LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。
linq to sql 系列之 linq to sql性能优化技巧
linq to sql 是一个代码生成器和ORM 工具,他自动为我们做了很多事情,这很容易让我们对他的性能产生怀疑。
但是也有几个测试证明显示在做好优化的情况下,linq to sql 的性能可以提升到 datareader 性能的93%。
因此我总结了linq to sql 的10个性能提升点,来优化其查询和修改的性能。
1. 不需要时要关闭 DataContext 的ObjectTrackingEnabled 属性1 using (NorthwindDataContext context = new NorthwindDataContext())2 {3 context.ObjectTrackingEnabled = false;4 }关闭这个属性会使linq to sql 停止对对象的标识管理和变化跟踪。
但值得注意的是关闭ObjectTrackingEnabled 意味着也将DeferredLoadingEnabled 属性设置为false ,当访问相关表时会返回null 。
2. 不要把所有的数据对象都拖到一个DataContext 中一个DataContext 代表一个工作单元,并非整个数据库。
如果几个数据库对象之间没有关系,或者在程序中用不到的数据库对象(例如日志表,批量操作表等等),让这些对象消耗内存空间和DataContext 对象跟踪服务是完全没有必要的。
建议将所有的数据库对象按工作单元分给几个DataContext 来处理。
你也可以通过构造函数配置这些DataContext 使用相同的数据库连接,这样也可以发挥据库连接池的用途。
3. CompiledQuery --- 有必要就得用在创建一个linq to sql 表达式并将它转换成对应的sql 语句执行的过程,需要几个关键的步骤1) 创建表达式树2) 转换成sql3) 运行sql 语句4) 取回数据5) 将数据转换成对象很显然,当我们一遍又一遍的执行相同的查询时,上面1),2)两个步骤重复执行是在浪费时间。
linq to sql
1
ORM框架
大部分ORM框架将数据库的关系模型抽象成对象模型后,对 数据库的访问就只能通过对象模型以标准的对象访问方式 来进行象;而LINQ to SQL不同,它不仅允许以标准的 对象访问方式来访问对象模型,而且可以使用非常类似于 SQL语句的查询表达式来操作对象模型。
什么是LINQ to SQL
LINQ to SQL全称基于关系数据的.NET语言集成查询, 用于以对象形式管理关系数据,并提供了丰富的查询功能 。其建立于公共语言类型系统中的基于SQL的模式定义的 集成之上,当保持关系型模型表达能力和对底层存储的直 接查询评测的性能时,这个集成在关系型数据之上提供强 类型 LINQ to SQL是.NET3.0版本以上的一个组件,用于对 LINQ与SQL查询进行“语言翻译”。LINQ to SQL就 是LINQ聘请的翻译大师。这个翻译大师可以将LINQ查询 翻译成SQL查询。LINQ to SQL首先通过编程语言创建 对象模型,接着通过程序实时翻译成SQL查询,以映射到 关系数据库的数据模型,从而实现查询操作关系型数据。
LINQ to SQL LINQ to DataSet LINQ to Entities
LINQ的分类
LINQ to SQL
面向SQL Server 数据库。
LINQ to XML
面向XML 文档。
面向 数据集。
LINQ to DataSet
LINQ to Objects
3 DataContex对象
3.3 CreateDatabase方法 CreateDatabase方法用于在数据库服务器上根据实体 类映射信息或者XML映射文件创建一个数据库,其方法原 型定义如下。 void CreateDatabase() CreateDatabase方法的使用非常简单,没有参数,只 是根据映射信息创建一个包含若干物理表的数据库。 3.4 DatabaseExists方法 DatabaseExists方法用于判断DataContex对象使用的数据 库是否存在,其方法原型定义如下。 bool DatabaseExists() 此方法的使用非常简单,没有参数,只是简单地根据 DataContex的初始化数据库连接信息判断数据库是否存在 。如果存在就返回true,否则返回false。
第四讲 linq to sql
//删除
总结
LINQ to SQL的增删改操作各分几步进行? 把每个班级中年龄小于本班平均年龄的学生加 1岁如何实现? LINQ to SQL中模糊查询需要用到哪个类? 如何实现?
一、查询出需要删除的实体对象 二、DeleteOnSubmit () 三、SubmitChanges ()
注:还可使用DeleteAllOnSubmit删除多条数据
MySchoolDataContext db = new MySchoolDataContext (); var stu = (from s in db.Students where s.StuID == id select s).First(); db.Students.DeleteOnSubmit(stu); db.SubmitChanges();
LINQ to SQL——高级查询(五)
模糊查询
语句描述:自定义的通配表达式。%表示任意长度的字符串,表示一个字符 ;[]表示在某范围内的一个字符;[^]表示不在某范围内的一个字符。
var q = from s in db.Students where SqlMethods.Like(s.StuName, “李%") select s;
执行查询
1.使用函数语法
dc.GetTable<BookEntity>().Where(s => s.sno == “01”);