zoukankan      html  css  js  c++  java
  • 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);    

  • 相关阅读:
    安装MySQL时出现黄色感叹号,提示3306已被占用
    python使用xlrd读取excel数据时,整数变小数的解决办法
    Xenu Link Sleuth 简单好用的链接测试工具 使用说明
    python的with用法(参考)
    关于Selenium HTMLTestRunner 无法生成测试报告
    关于python-生成HTMLTestRunner测试报告
    如何出(改编)一道ACM算法题?
    近期思考(2019.07.20)
    爱,死亡和机器人 第十四集 齐马蓝 中文字幕(Python处理utf8文件获取想要的内容)
    LeetCode 75. Sort Colors (python一次遍历,模拟三路快排的分割操作)
  • 原文地址:https://www.cnblogs.com/rumeng/p/LINQ.html
Copyright © 2011-2022 走看看