当前位置:Gxlcms > 数据库问题 > LinQ to SQL 查询

LinQ to SQL 查询

时间:2021-07-01 10:21:17 帮助过:2人阅读

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

LinQ to SQL 查询

标签:

人气教程排行