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()<
select a; //LINQ查询语句 找到价格小于10的数据
GridView1.DataSource = result;
GridView1.DataBind();
当只要Where条件查询的时候 简写
dc.Products.where(x=>x.ID==1); 查询产品编号等于1的产品

联合查询

 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 <
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();

LinQ to SQL 查询的更多相关文章

  1. 20150221—LINQ to SQL 查询数据

    LINQ to SQL 可以快捷的查询基于SQL的数据,直接在VS中包括基本的Object/relation映射器,O/R映射器可以快速的将基于SQL的数据源映射为CLR对象,之后就可以使用LINQ查 ...

  2. linQ to sql 查询生成的sql语句

    1.  如果是控制台应用,直接 db.Log = Console.Out; 2.其他应用则用如下语句: StringBuilder sql = new StringBuilder(); db.Log ...

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

    原来的写法: Dim db = From city In DataContext1.AddressCity Where city.ProvinceID = dgvAddress(2, e.RowInd ...

  4. 查询大数据表的效率对比:Linq to SQL、Entity Framework、企业库存储过程、ADO.Net

    最近因为要开发大数据量网站,特作比较. Linq to SQL 查询 记录数:399997Linq to SQL 查询 Milliseconds:1910视图查询 记录数:399997视图查询 Mil ...

  5. 年终巨献 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  6. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...

  7. LINQ to SQL语句(14)之Null语义和DateTime

    Null语义 说明:下面第一个例子说明查询ReportsToEmployee为null的雇员.第二个例子使用Nullable<T>.HasValue查询雇员,其结果与第一个例子相同.在第三 ...

  8. LINQ To SQL

    议程 1.LINQ To SQL概述 2.LINQ To SQL对象模型 3.LINQ To SQL查询 用到的数据库 SQL Server 2005,数据库名为Test. 两张表,分别为Studen ...

  9. LINQ TO SQL 大全

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 LINQ to SQL语句(1)之Where 适用场景: ...

随机推荐

  1. LDAP协议介绍

    LDAP协议基础概念  1. 从用途上阐述LDAP,它是一个存储静态相关信息的服务,适合"一次记录多次读取".经常使用LDAP服务存储的信息: 公司的物理设备信息(如打印机,它的I ...

  2. 【Cocos2d-X开发学习笔记】第19期:动作管理类(CCActionManager)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.动作管理类 动作管理类CCActionMan ...

  3. [MongoDB] Remove, update, create document

    Remove: remove the wand with the name of "Doom Bringer" from our wandscollection. db.wands ...

  4. IOS Layer的使用

    CALayer(层)是屏幕上的一个矩形区域,在每一个UIView中都包含一个根CALayer,在UIView上的所有视觉效果都是在这个Layer上进行的. CALayer外形特征主要包括: 1.层的大 ...

  5. bat处理文件

    bat处理文件 作用:可以一次性执行多个命令的文件. 为什么要学bat处理文件? 快速运行一个软件一般都会把软件打包一个jar包,但是jar双击可以运行仅对图形化界面的软件起作用,对于控制台的程序是不 ...

  6. HTML5 prefetch即预加载

    原文地址 声明:此文带着自己的理解,不完全按原文翻译 prefetch 即预加载,在用户需要前我们就将所需的资源加载完毕. 有了浏览器缓存,为何还需要预加载? 用户可能是第一次访问网站,此时还无缓存 ...

  7. iOS图片设置圆角

    一般我们在iOS开发的过程中设置圆角都是如下这样设置的. imageView.clipsToBounds = YES; [imageView.layer setCornerRadius:]; 这样设置 ...

  8. BZOJ 3926 && ZJOI 2015 诸神眷顾的幻想乡 (广义后缀自动机)

    3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MB Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽 ...

  9. 【5】python核心编程 第八章-条件和循环

    1.=== range() 的完整语法=== Python 提供了两种不同的方法来调用 range() . 完整语法要求提供两个或三个整数参数: range(start, end, step =1) ...

  10. 文件:一个任务 - 零基础入门学习Python029

    文件:一个任务 让编程改变世界 Change the world by program 一个任务 这节课,我们需要一起来完成一个任务:将文件(record.txt)中的数据进行分割并按照以下规律保存起 ...