关闭

一步一步学Linq to sql(四):查询语法

651人阅读 评论(0) 收藏 举报

from 表中的元素 in

where 查询条件

select new{

           new一个新对象的属性

           };


    protected void Page_Load(object sender, EventArgs e)
    {
        linqDBDataContext linqDB = new linqDBDataContext();
        //一、select 
        var result1 = from c in linqDB.Customer
                      select new
                      {
                          名称 = c.Name,
                          城市 = c.City
                      };

        //查询职员的姓名和雇用年份
        var result2 = from emp in linqDB.Employees
                      select new
                      {
                          姓名 = emp.FirstName + emp.LastName,
                          雇佣年 = emp.HireDate.Value.Year
                      };

        var result3 = from c in linqDB.Customers
                      select new
                      {
                          ID = c.CustomerID,
                          联系信息 = new
                          {
                              职位 = c.ContactTitle,
                              联系人 = c.ContactName
                          }
                      };

        //查询订单号和订单是否超重的信息
        var result4 = from o in linqDB.Orders
                      select new
                      {
                          订单号 = o.OrderID,
                          是否超重 = o.Freight > 100 ? "是" : "否"
                      };




        //二、where 
        //要求国家是美国并且订单数大于5
        var result5 = from c in linqDB.Customers
                      where c.Country == "美国" && c.Orders > 5
                      select new
                      {
                          国家 = c.Country,
                          城市 = c.City,
                          订单数 = c.Orders
                      };



        //三、orderby
        // 按照雇用年倒序,按照名正序
        var result6 = from emp in linqDB.Employees
                      orderby emp.HireDate.Value.Year ascending, emp.FirstName descending
                      select new
                      {
                          姓名 = emp.FirstName + emp.LastName,
                          雇佣年 = emp.HireDate.Value.Year
                      };


        //四、分页
        var result7 = (from c in linqDB.Customers select c).Skip(10).Take(10);

        //五、分组
        //根据顾客的国家分组,查询顾客数大于5的国家名和顾客数
        var result8 = from c in linqDB.Customers
                      group c by c.Country into g
                      where g.Count() > 5
                      orderby g.Count() descending
                      select new
                      {
                          国家 = g.Key,
                          顾客数 = g.Count()
                      };

        //根据国家和城市分组,查询顾客覆盖的国家和城市
        var result9 = from c in linqDB.Customers
                      group c by new { c.Country, c.City } into g
                      orderby g.Key.Country, g.Key.City
                      select new
                      {
                          国家 = g.Key.Country,
                          城市 = g.Key.City
                      };

        //按照是否超重条件分组,分别查询订单数量
        var result10 = from o in linqDB.Orders
                       group o by new { 条件 = o.Freight > 100 } into g
                       select new
                       {
                           数量 = g.Count(),
                           是否超重 = g.Key.条件 ? "是" : "否"
                       };

        //六、distinct
        //查询顾客覆盖的国家
        var result11 = (from c in linqDB.Customers orderby c.Country select c.Country).Distinct();
        
        //七、concat 连结
        //查询城市是"旧"打头的顾客和顾客名称包含"小"的顾客,并按照顾客名字排序,相同的顾客信息不会过滤
        var result12 = (from c in linqDB.Customers where c.City.StartsWith("旧") select c).Concat
              (from c in linqDB.Customers where c.ContactName.Contains("小") select c).OrderBy(c => c.ContactName);

        //八、取相交项
        //查询城市是"旧"打头的顾客和顾客名称包含"小"的顾客,的交集,并按照顾客名字排序
        var result13 = (from c in linqDB.Customers where c.City.StartsWith("旧") select c).Intersect
              (from c in linqDB.Customers where c.ContactName.Contains("小") select c).OrderBy(c => c.ContactName);

        //九、排除相交项
        //查询城市是"旧"打头的顾客,并从中删除顾客名称包含"小"的顾客,并按照顾客名字排序
        var result14 = (from c in linqDB.Customers where c.City.StartsWith("旧") select c).Except
           (from c in linqDB.Customers where c.ContactName.Contains("小") select c).OrderBy(c => c.ContactName);

        //十、子查询
        //查询订单数超过1的顾客信息
        var result15 = from c in linqDB.Customers
                       where
                       (from o in linqDB.Orders group o by o.CustomerID into o where o.Count() > 1 select o.Key).Contains(c.CustomerID)
                       select c;

        //十一、in操作
        //描述:查询指定城市中的客户
        var result16 = from c in linqDB.Customers
                       where new string[] { "北京", "旧金山" }.Contains(c.City)
                       select c;

        //十二、join(相当于SQL语句的INNER JOIN)
        //内连接,没有分类的产品查询不到
        var result17 = from l in linqDB.lb
                       join p in linqDB.Products
                       on l.id equals p.lbId
                       select p.ProductsName;

        //十三、
        //外连接,没有分类的产品也能查询到(相当于SQL语句的LEFT JOIN )
        var result18 = from l in linqDB.lb
                       join p in linqDB.Products
                       on l.id equals p.lbId
                       into pro
                       from x in pro.DefaultIfEmpty()
                       select new
                       {
                           l.lbName,
                           x.ProductsName
                       };
        //十四
        //视图
        var result = from v in linqDB.View1
                     select v;
        GridView1.DataSource = result;
        GridView1.DataBind();
    }

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

一步一步学Linq to sql(一)

(一):预备知识 什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管...
  • huangwenhua5000
  • huangwenhua5000
  • 2013-01-18 15:58
  • 426

一步一步学ROP之linux_x86篇

0x00    本文仅解释说明蒸米大神一步一步学ROP之linux_x86篇,读者应先阅读这篇文章,遇到问题再来看我这篇文章。    阅读完这两篇文章后,我们会理解ROP(返回导向编程),DEP(堆栈...
  • jltxgcy
  • jltxgcy
  • 2016-02-19 11:16
  • 2376

一步一步学Linq to sql(四):查询句法

一步一步学Linq to sql(四):查询句法 作者: lovecherry  来源: 博客园  发布时间: 2008-09-26 22:59  阅读: 33431 次  推荐: 0...
  • dongliang_shali
  • dongliang_shali
  • 2016-02-19 15:36
  • 179

一步一步学ROP之linux_x86篇

ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。虽然现在大家都在...
  • AliMobileSecurity
  • AliMobileSecurity
  • 2016-07-06 13:33
  • 3431

一步一步学Linq to sql(一):预备知识

什么是Linq to sql Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了...
  • dyllove98
  • dyllove98
  • 2013-04-12 22:46
  • 712

小菜一步一步学数据结构之(一)基本概念和术语

数据结构是一门研究非数值计算程序设计中的操作对象,以及这些对象之间的关系和操作的学科。基本概念和术语*数据(data)–所有能输入到计算机中去的描述客观事物的符号的总称 *数据元素(data ele...
  • IT_DS
  • IT_DS
  • 2016-01-11 20:16
  • 1049

Linux网络编程一步一步学+基础

http://blogold.chinaunix.net/u1/48325/showart_413841.html http://blogold.chinaunix.net/u1/48325/sho...
  • bruceyang2009lzu
  • bruceyang2009lzu
  • 2013-05-28 16:18
  • 1380

一步一步跟我学hadoop(1)----hadoop概述和安装配置

这几年云计算大数据很火,借这个东风,今天开始学习apache的分布式计算框架hadoop,希望不要太落后。 Apache Hadoop是一个在大型集群的商品硬件上运行的应用程序的框架。Hadoop框架...
  • wuyinggui10000
  • wuyinggui10000
  • 2015-07-05 23:08
  • 2276

一步一步学ROP之Android ARM 32位篇

0x00 序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术,可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名...
  • omnispace
  • omnispace
  • 2016-03-06 16:32
  • 760

一步一步学ROP之gadgets和2free篇

ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术,可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。上次我们主要讨...
  • SmalOSnail
  • SmalOSnail
  • 2016-12-11 14:42
  • 846
    个人资料
    • 访问:396672次
    • 积分:8673
    • 等级:
    • 排名:第2599名
    • 原创:399篇
    • 转载:56篇
    • 译文:7篇
    • 评论:40条
    最新评论