• LINQ学习笔记(一)基本语法


    1、LINQ简介

          LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。包括五个部分:LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。最常用的就是LINQ to SQL。

    2、LINQ TO SQL 语法

         基本格式:  from p in 表名

                         where 条件

                         select p

    • where 操作:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句

             eg:var q = from c in db.Customers where c.City == "London" select c;

    • Select/Distinct操作:与SQL中的Select作用相似,但是位置不同,Select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来

          Select/Distinct操作包括9种形式:

          简单用法:

          eg:var q = from c in db.Customers select c.ContactName

          匿名类型形式:其实质是编译器根据我们自定义自动产生一个匿名的类来帮助我们实现临时变量的储存。匿名类型还依赖于另外一个特性:支持根据property来创建对象。比如,var d = new { Name = "s" };编译器自动产生一个有property叫做Name的匿名类,然后按这个类型分配内存,并初始化对象。

          eg:var q = from e in db.Employees

                           select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone }

         条件形式:生成SQL语句为:case when condition then else

          eg:var q = from p in db.Products

                            select new { p.ProductName,

                            Availability = p.UnitsInStock - p.UnitsOnOrder < 0 ? "Out Of Stock" : "In Stock" };

         指定类型形式:该形式返回你自定义类型的对象集

         eg:var q = from e in db.Employees

                           select new Name { FirstName = e.FirstName, LastName = e.LastName };

         筛选形式:结合where使用,起到过滤作用

         eg:var q = from c in db.Customers where c.City == "London" select c.ContactName

         整形类型形式:其select操作使用了匿名对象,而这个匿名对象中,其属性也是个匿名对象

         eg:var q = from c in db.Customers

                          select new { c.CustomerID,

                                            CompanyInfo = new {c.CompanyName, c.City, c.Country},

                                             ContactInfo = new {c.ContactName, c.ContactTitle} };

         嵌套类型形式:LINQ语句可以多层嵌套

         eg:

    var q =
        from o in db.Orders
        select new {
            o.OrderID,
            DiscountedProducts =
                from od in o.OrderDetails
                where od.Discount > 0.0
                select od,
            FreeShippingDiscount = o.Freight
        };
    View Code

          本地方法调用形式:可以调用本地方法

          eg:

    var q = from c in db.Customers
             where c.Country == "UK" || c.Country == "USA"
             select new
             {
                 c.CustomerID,
                 c.CompanyName,
                 Phone = c.Phone,
                 InternationalPhone = 
                 PhoneNumberConverter(c.Country, c.Phone)
             };
    
    public string PhoneNumberConverter(string Country, string Phone)
    {
        Phone = Phone.Replace(" ", "").Replace(")", ")-");
        switch (Country)
        {
            case "USA":
                return "1-" + Phone;
            case "UK":
                return "44-" + Phone;
            default:
                return Phone;
        }
    }
    View Code

          Distinct形式:筛选字段中不相同的值。用于查询不重复的结果集

          eg:var q = ( from c in db.Customers select c.City ) .Distinct();

    • Count/Sum/Min/Max/Avg操作符:统计一些数据的个数,求和,最小值,最大值,平均数

        Count方法的两种方式:

              1、简单形式:var q = db.Customers.Count()

              2、带条件形式:var q = db.Products.Count(p => !p.Discontinued);

        Sum/Min/Max/Avg方法的两种方式:

              1、简单形式:var q = db.Orders.Select(o => o.Freight).Sum();

              2、映射形式:var q = db.Products.Sum(p => p.UnitsOnOrder);    

  • 相关阅读:
    写最简单的jsp判断今天是这个星期的第几天
    用jsp写出记忆曲线的表格(用学习新概念英语做例子)
    使用Eclipse建立web工程
    java最最基础知识(入门必备)
    如何配置eclipse里面的tomcat
    简单的eclipse配置
    简单的jdk配置
    python画图(标记、marker、设置标记大小、marker符号大全)(图文详细入门教程五)
    python画图(线条颜色、大小、类型:点、虚线等)(图文详细入门教程四)
    python画图(添加图例、网格)(图文详细入门教程三)
  • 原文地址:https://www.cnblogs.com/rumeng/p/LINQ.html
Copyright © 2020-2023  润新知