LinQ to SQL 查询

LINQ to SQL 是将对象关系映射到.NET框架中的一种实现。它可以将关系数据库映射为.NET Framework中的一些类。 然后,开发人员就可以通过使用 LINQ to SQL对数据库中的数据进行查询、修改、插入、删除等操作。

LINQ to SQL类映射到SQL Server数据库中的表,这些类被称做“实体类”,实体类中的属性或字段映射到SQL server 数据库中表的列,实体类之间的关联映射到 SQL Server数据库中的外键关系,LINQ to SQL类中的方法映射为SQL 数据库中 的存储过程或函数。下表为LINQ to SQL对象模型和 SQL Server数据库中的对象的映射关系。

先添加LINQ to SQL类  xxxxDB.dbml   记住你的名称     在App_Code中打开xxxxDB.dbml 把需要操作的表拖进去即可

创建DBML文件,其中包含了*.dbml.layout文件和 *.designer.cs文件。 其中*.dbml.layout保存了 Dbml文件的布局。 *designer.cs文件是Visual Studio 2008集成开发环境调用代码生成工具SqlMetail创 建的dbml文件的代码。

DataContext称为数据上下文,它为LINQ to SQL 提供操作数据库的入口,如果使用LINQ to SQL 操作数据库,则首先需要为数据库创建一个继承于DataContext类的自定义的数据上下文类,并在该类中定义表,以及操作数据的方法等。

DataContext类充当SQL Server数据库与映射到该数据库的LINQ to SQL实体类之间的管道,它包含用于连接数据库以及操作数据库数据的连接字符串信息和方法。DataContext类能够通过数据库连接或连接字符串来映射数据库中的所有实体的源,并跟踪和标识用户对数据库的更改。用户可以调用其SubmitChanges()方法将所有更改提交到数据库。

简单查询

 NorthwindDBDataContext dc = new NorthwindDBDataContext();   //添加LINQ to SQL类时起的名字是什么这就是什么
        var result = from a in dc.Products
                     where a.UnitPrice.GetValueOrDefault()<10
                     select a;    //LINQ查询语句  找到价格小于10的数据
        GridView1.DataSource = result;
        GridView1.DataBind();

联合查询

 LinqDBDataContext db = new LinqDBDataContext(LinqSystem.LinqDBConnectionString);
        var result = from user in db.UserInfo
                     join ur in db.UserRole on user.ID equals ur.UserID
                     join role in db.Role on ur.RoleID equals role.ID
                     where user.ID < 200
                     select new
                     {
                         ID = user.ID, //显示ID,用户名,电子邮箱和角色
                         UserName = user.Username,
                         Email = user.Email,
                         RoleName = role.RoleName
                     };
        dl_List.DataSource = result;
        dl_List.DataBind();

**分组查询和聚合查询

from p in dc.Products
group p(分组对象)  by p.CategoryID(分组依据)  into g      //g里面就是p的集合     g.key=p.CategoryID

select    new{     }    //显示什么这里就写什么

NorthwindDBDataContext dc = new NorthwindDBDataContext();
        //根据产品ID来得到最贵的产品价格和最低的产品价格
        var result = from p in dc.Products
                     group p by p.CategoryID into g
                     select new     //映射到新的匿名对象  需要显示什么里面就去生成什么
                     {
                         CateID=g.Key,          //by和面接什么  g.key就是什么
                         Max=g.Max((x)=>x.UnitPrice),  //聚合函数  最大值
                         Min=g.Min((x)=>x.UnitPrice)    //聚合函数   最小值
                     };

        //获取每个分类中产品的总个数,并显示分类名,总数,总价
        var result1 = from p in dc.Products
                      join c in dc.Categories on p.CategoryID equals c.CategoryID
                      group new { p = p, c = c } by c.CategoryName into g   //new { p = p, c = c }   把需要的对象都添加到匿名对象中
                      select new
                      {
                          CateName=g.Key,
                          Count=g.Count(),      //总数
                         Sum=g.Sum((x)=>x.p.UnitPrice)        //求总价
                      };
        //获取每个分类中最贵的产品价格和产品名称
        var result2 = from p in dc.Products
                      join c in dc.Categories on p.CategoryID equals c.CategoryID
                      group new { p = p, c = c } by c.CategoryName into g
                      select new
                      {
                         Max=g.Max((x)=>x.p.UnitPrice),
                         CateName=g.Key,
                         ProductName=(from u in dc.Products
                                          where u.UnitPrice==g.Max((x)=>x.p.UnitPrice)     //条件用来过滤产品名,只需要最贵那个
                                          select u.ProductName   //投影一个产品名   根据需要来映射   这里需要产品名称就只映射产品名称
                                          ).First()  //返回序列中的第一个元素
                      };
        GridView1.DataSource = result2;
        GridView1.DataBind();
时间: 2024-10-19 23:36:18

LinQ to SQL 查询的相关文章

20150221&mdash;LINQ to SQL 查询数据

LINQ to SQL 可以快捷的查询基于SQL的数据,直接在VS中包括基本的Object/relation映射器,O/R映射器可以快速的将基于SQL的数据源映射为CLR对象,之后就可以使用LINQ查询. 如下图中,在项目中右键添加--新建项,找到LINQ to SQL类 然后创建新连接,点击连接到数据库: 添加连接 在左侧的服务管理资源中找到需要添加的连接名,表名 将表拖拽到DataClasses1,点击 是 根据需要将需要的表拖拽进来: 拥有主外键关系的表会在其之间有一条虚线.   使用LI

去除Linq to Sql 查询结果中的空格

原来的写法: Dim db = From city In DataContext1.AddressCity Where city.ProvinceID = dgvAddress(2, e.RowIndex).Value.ToString  . Select city.CityID, city.CityName.Trim 可以去掉CityName中的空格,但是db中的列名改变了,在绑定Combobox中出现了错误. 修改后的写法: Dim db = From city In DataContext

LINQ To SQL 语法及实例大全

LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c

利用LINQ to SQL 增删改查本地数据库

C#新人,博客园第一篇博文,希望大家多多指教. 最近趁项目空隙,学习了LINQ,其强大高效易读的数据操作方式令人印象深刻.特别是LINQ to SQL,让用户可以像操作内存对象一样操作SQL数据库.在阅读了<深入理解c#>和参考以下四篇博文后,自己摸索,完成了创建本地SQL数据库和数据表,VS连接数据库,到利用LINQ to SQL增删改查数据库表中信息. SQL服务器安装:http://www.downcc.com/tech/4135.html SQL数据库和数据表格创建:http://bl

LINQ to SQL语句入门篇 纯属转载

Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c; 再如:筛选1994 年或之后雇用的雇员:

LINQ体验(11)——LINQ to SQL语句之Null语义和String/DateTime方法

在本系列中.主要介绍LINQ to SQL基础的东西,由于LINQ太强大了,它对我们寻常使用不同的数据源有着不同的内容,其包含对于SQL Server 数据库的LINQ to SQL:对于XML 文档的LINQ to XML.对于 ADO.NET 数据集的LINQ to DataSet.对于.NET 集合.文件.字符串等的LINQ to Objects.例外也出现了一些对LINQ支持的开源项目,比如LINQ to JSON,LINQ for NHibernate等等. 在这个系列中,一些关于LI

Windows Phone本地数据库(SQLCE):2、LINQ to SQL(翻译)(转)

首先.要说到的是,windows phone 7.1上基本的数据库功能是SQL Compact关于Mango的一个实现,使用linq to sql访问存储在数据库上的数据. 1.LINQ to SQL是什么 LINQ to SQL 是一个作为.NET Framework上的一部分的ORM(对象关系映射)框架.它允许你映射你的业务对象(business object)(模型类)到数据库中的表,然后可以不用写单一的SQL语句来访问或查询数据库中的数据.随着Mango的更新,LINQ to SQL现在

c# LINQ to SQL

list例: List<result_1> list = get_lately_fifty_data(); List<int> number_count = (from c in list orderby c.Number ascending select c.Count).ToList(); datatable例: var q = from p in dt.AsEnumerable() where p.Field<string>("username"

LINQ to SQL语句(1)之Where(抄的好)

Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句. Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c; 再如:筛选1994 年或之后雇用的雇员: