1. 查询所有字段

  using (NorthwindEntities context = new NorthwindEntities())
            {
                var order = from n in context.Orders select n;
                foreach (var i in order.ToList())
                {
                    Console.Write(i.Customers);
                    Console.WriteLine();
                }
            }

生成SQL语句为:

SELECT
    [Extent1].[OrderID] AS [OrderID],
    [Extent1].[CustomerID] AS [CustomerID],
    [Extent1].[EmployeeID] AS [EmployeeID],
    [Extent1].[OrderDate] AS [OrderDate],
    [Extent1].[RequiredDate] AS [RequiredDate],
    [Extent1].[ShippedDate] AS [ShippedDate],
    [Extent1].[ShipVia] AS [ShipVia],
    [Extent1].[Freight] AS [Freight],
    [Extent1].[ShipName] AS [ShipName],
    [Extent1].[ShipAddress] AS [ShipAddress],
    [Extent1].[ShipCity] AS [ShipCity],
    [Extent1].[ShipRegion] AS [ShipRegion],
    [Extent1].[ShipPostalCode] AS [ShipPostalCode],
    [Extent1].[ShipCountry] AS [ShipCountry]
    FROM [dbo].[Orders] AS [Extent1]

 2. 指定字段查询

var product = from n in context.Products
                    .Select(p => new { p.CategoryID, p.ProductName })
                    select n;

也可以是:

  var product = context.Products.Select(p => new { p.CategoryID, p.ProductName });

 生成SQL语句为:

SELECT
     AS [C1],
    [Extent1].[CategoryID] AS [CategoryID],
    [Extent1].[ProductName] AS [ProductName]
    FROM [dbo].[Products] AS [Extent1]

3. First和FirstOrDefault

 var product = context.Products.FirstOrDefault();
 var product = context.Products.First();

生成SQL语句为:

)
    [c].[ProductID] AS [ProductID],
    [c].[ProductName] AS [ProductName],
    [c].[SupplierID] AS [SupplierID],
    [c].[CategoryID] AS [CategoryID],
    [c].[QuantityPerUnit] AS [QuantityPerUnit],
    [c].[UnitPrice] AS [UnitPrice],
    [c].[UnitsInStock] AS [UnitsInStock],
    [c].[UnitsOnOrder] AS [UnitsOnOrder],
    [c].[ReorderLevel] AS [ReorderLevel],
    [c].[Discontinued] AS [Discontinued]
    FROM [dbo].[Products] AS [c]

4. Single和SingleOrDefault

var product = context.Products.Single(p => p.ProductID==1);
var product = context.Products.SingleOrDefault(p => p.ProductID==1);

生成的SQL语句为:

)
    [Extent1].[ProductID] AS [ProductID],
    [Extent1].[ProductName] AS [ProductName],
    [Extent1].[SupplierID] AS [SupplierID],
    [Extent1].[CategoryID] AS [CategoryID],
    [Extent1].[QuantityPerUnit] AS [QuantityPerUnit],
    [Extent1].[UnitPrice] AS [UnitPrice],
    [Extent1].[UnitsInStock] AS [UnitsInStock],
    [Extent1].[UnitsOnOrder] AS [UnitsOnOrder],
    [Extent1].[ReorderLevel] AS [ReorderLevel],
    [Extent1].[Discontinued] AS [Discontinued]
    FROM [dbo].[Products] AS [Extent1]
     = [Extent1].[ProductID]

5.First,FirstOrDefault,Single,SingleOrDefault的区别

区别:

First:取序列中满足条件的第一个元素,如果没有元素满足条件,则抛出异常。

FirstOrDefault:取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0)。

Single:返回序列中的唯一一条记录,如果没有或返回多条,则引发异常。

SingleOrDefault:返回序列中的唯一一条记录,如果序列中不包含任何记录,则返回默认值,如果返回多条,则引发异常。

使用场景:

当没有元素满足条件时,First会抛出异常,FirstOrDefault会返回默认值。

1. First当确信有元素满足条件时,使用First方法。取到元素后,无需判断是否为null。

2. 当不确信或序列中找不到满足条件的元素时,使用FirstOrDefault方法。然后一定要对返回值进行判断是否为null,进行不同的处理

LINQ to SQL Select查询的更多相关文章

  1. LINQ系列:LINQ to SQL Select查询

    1. 查询全部字段 using (NorthwindContext context = new NorthwindContext()) { var expr = context.Products; f ...

  2. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  3. Linq to SQL -- Select、Distinct和Count、Sum、Min、Max、Avg

    Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...

  4. Linq to SQL 语法查询(子查询 & in操作 & join )

    var 子查询 = from c in ctx.Customers                    where                        (from o in ctx.Ord ...

  5. (转)QueryBuilder : 打造优雅的Linq To SQL动态查询

    原文地址:http://www.cnblogs.com/coolcode/archive/2009/09/28/IQueryBuilder.html 首先我们来看看日常比较典型的一种查询Form 这个 ...

  6. Linq to Sql 聚合查询

    //输出体重最大的同学,并要求最大体重得大于39,并按照体重大下,对分组结果进行排序. var result = from query in linq.Student group query by q ...

  7. 数据库SQL SELECT查询的工作原理

    一般开发员只会应用SQL的四条经典语句:select,insert,delete,update.但是我从来没有研究过它们的工作原理,这篇我想说一说select在数据库中的工作原理. B/S架构中最经典 ...

  8. SQL select查询原理--查询语句执行原则<转>

    1.单表查询:根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的):然后根据SELECT的选择列选择相应的列进行返回最终结果. 1)简单的单表查询 SELECT 字段 FROM ...

  9. linq to sql 怎么查询前 11 条数据

    (from 新表 in db.books where 新表.bookid < 400 select 新表).Take(11); storeDB.Albums.OrderByDescending( ...

随机推荐

  1. Web性能优化:图片优化

    程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...

  2. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  3. 前端学HTTP之Web主机托管

    前面的话 对内容资源的存储.协调以及管理的职责统称为Web主机托管.主机托管是Web服务器的主要功能之一.保存并提供内容,记录对内容的访问以及管理内容都离不开服务器.如果不想自行管理服务器所需的软硬件 ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

  5. History API与浏览器历史堆栈管理

    移动端开发在某些场景中有着特殊需求,如为了提高用户体验和加快响应速度,常常在部分工程采用SPA架构.传统的单页应用基于url的hash值进行路由,这种实现不存在兼容性问题,但是缺点也有--针对不支持o ...

  6. [Nginx笔记]关于线上环境CLOSE_WAIT和TIME_WAIT过高

    运维的同学和Team里面的一个同学分别遇到过Nginx在线上环境使用中会遇到TIME_WAIT过高或者CLOSE_WAIT过高的状态 先从原因分析一下为什么,问题就迎刃而解了. 首先是TIME_WAI ...

  7. 代码的坏味道(16)——纯稚的数据类(Data Class)

    坏味道--纯稚的数据类(Data Class) 特征 纯稚的数据类(Data Class) 指的是只包含字段和访问它们的getter和setter函数的类.这些仅仅是供其他类使用的数据容器.这些类不包 ...

  8. EC笔记:第4部分:21、必须返回对象时,别返回引用

    使用应用可以大幅减少构造函数与析构函数的调用次数,但是引用不可以滥用. 如下: struct St { int a; }; St &func(){ St t; return t; } 在返回t ...

  9. MySQL:常见使用问题

    内容 1.Linux 上安装 MySQL 2.单机上安装多实例 3.不知root密码情况下,修改root密码 1.Linux 上安装MySQL 安装步骤: 1)解压 tar.gz文件 -linux-g ...

  10. linux常用命令(3)mkdir命令

    mkdir命令1 命令格式:mkdir [选项]目录名2 命令功能:通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录.要创建文件夹或目录的用户必须对所创 ...