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

  • 相关阅读:
    SOFT-NMS (二) (non maximum suppression,非极大值抑制)
    NMS(non maximum suppression,非极大值抑制)
    读取txt文件的数据,并将其转换为矩阵
    x.append()增加不同维度的区别
    in __init__ self._traceback = tf_stack.extract_stack()的一个原因
    LoadRunner系列之—-03 用Java Vuser协议编写接口测试脚本
    WebLogic篇----02 控制台性能监控
    soapUI系列之—-01 介绍soapUI简介,groovy 简介
    oracle获取字符串长度函数length()和lengthb()
    soapUI系列之—-06 testrunner实现自动化测试
  • 原文地址:https://www.cnblogs.com/rumeng/p/LINQ.html
Copyright © 2011-2022 走看看