LINQ to Entities 中的查询
MSDN地址:https://msdn.microsoft.com/zh-cn/library/bb399367%28v=vs.100%29.aspx
查询是一种从数据源检索数据的表达式。 查询通常用专用查询语言表示,如用于关系数据库的 SQL 和用于 XML 的 XQuery。 因此,开发人员对于他们查询的每种类型的数据源或数据格式,都不得不学习一种新的查询语言。 语言集成查询 (LINQ) 为跨各种数据源和格式处理数据提供了一种更简单的、一致的模型。 在 LINQ 查询中,您始终可以使用编程对象。
LINQ 查询操作包含三个操作:获得一个或多个数据源、创建查询并执行查询。
可以通过 LINQ 查询实现 IEnumerable 泛型接口或 IQueryable 泛型接口的数据源。 ObjectQuery 泛型类(可实现 IQueryable 泛型接口)的实例可充当 LINQ to Entities 查询的数据源。 ObjectQuery 泛型类表示一个查询,该查询返回零个或多个类型化对象的集合。 您还可以通过使用 C# 关键字 var(在 Visual Basic 中为 Dim)让编译器推断实体的类型。
在查询中,指定您要从数据源中检索的准确信息。 查询也可以指定返回信息之前信息的排序、分组和表现方式。 在 LINQ 中,查询存储在变量中。 如果查询返回一系列值,则查询变量本身必须为可查询的类型。 此查询变量不执行任何操作,也不返回任何数据;它只存储查询信息。 创建查询后必须执行该查询以检索任何数据。
查询语法
可以通过两种不同的语法编写 LINQ to Entities 查询:查询表达式语法和基于方法的查询语法。 查询表达式语法是 C# 3.0 和 Visual Basic 9.0 中的新增功能,它由一组用类似于 Transact-SQL 或 XQuery 的声明性语法所编写的子句组成。 不过,.NET Framework 公共语言运行时 (CLR) 无法读取查询表达式语法本身。 因此,在编译时,查询表达式将转换为 CLR 能理解的形式,即方法调用。 这些方法称为“标准查询运算符”。 作为开发人员,您可以选择使用方法语法而不使用查询语法直接调用这些方法。 有关更多信息,请参见Query Syntax versus Method Syntax。
查询表达式语法
例如:
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<Product> productsQuery = from product in context.Products
select product; Console.WriteLine("Product Names:");
foreach (var prod in productsQuery)
{
Console.WriteLine(prod.Name);
}
}
查询表达式是一种声明性查询语法。 通过这一语法,开发人员可以使用类似于 Transact-SQL 的高级语言格式编写查询。 通过使用查询表达式语法,您可以用最少的代码对数据源执行复杂的筛选、排序和分组操作。 有关更多信息,请参见Basic Query Operators。 有关演示如何使用查询表达式语法的示例,请参见以下主题:
基于方法的查询语法
例如:
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
var query = context.Products
.Select(product => new
{
ProductId = product.ProductID,
ProductName = product.Name
}); Console.WriteLine("Product Info:");
foreach (var productInfo in query)
{
Console.WriteLine("Product Id: {0} Product name: {1} ",
productInfo.ProductId, productInfo.ProductName);
}
}
另一种编写 LINQ to Entities 查询的方法是使用基于方法的查询。 基于方法的查询语法是一系列针对 LINQ 运算符方法的直接方法调用,同时将 lambda 表达式作为参数传递。 有关更多信息,请参见 Lambda Expressions。 有关演示如何使用基于方法的语法的示例,请参见以下主题:
- 基于方法的查询语法示例:投影 (LINQ to Entities)
- 基于方法的查询语法示例:筛选 (LINQ to Entities)
- 基于方法的查询语法示例:排序 (LINQ to Entities)
- 基于方法的查询语法示例:聚合运算符 (LINQ to Entities)
- 基于方法的查询语法示例:分区 (LINQ to Entities)
- 基于方法的查询语法示例:转换 (LINQ to Entities)
- 基于方法的查询语法示例:联接运算符 (LINQ to Entities)
- 基于方法的查询语法示例:元素运算符 (LINQ to Entities)
- 基于方法的查询语法示例:分组 (LINQ to Entities)
- 基于方法的查询语法示例:导航关系 (LINQ to Entities)
LINQ to Entities 中的查询的更多相关文章
- LINQ中in的实现方法-LINQ To Entities如何实现查询 select * from tableA where id in (1,2,3,4)
如果用in是字符串类型无问题,可以直接这样用 ).Where(entity => urls.Contains((entity.NavigateUrl == null ? "" ...
- Linq To Entities中的动态排序
换了工作有一个月了,一样的工作.一样的代码.一样的体力活仍就…… Linq To Entityes 也是不新玩意了,近半年来也一直与之打交道,但一直也没对其深究过.今天新加的功能要对所有列支持排序,这 ...
- wcf+linq to sql中关联查询返回数据问题
前段时间准备采用wcf+nh框架开发sl程序,发现采用nh开发不适合我的中型.并且快速开发项目,所以综合考量了下,决定采用wcf+linq to sql . 但是此模式也有缺点,也是linq to s ...
- Linq to Entities中无法构造实体或复杂类型
EF中在使用linq就行查询select时不能直接使用自动映射生成的类,需要在单独声明一个类或者使用匿名类在查询完成后再转为对应的对象. public partial class WebForm1 : ...
- 在linq to entities中无法使用自定义方法
来源: http://support.microsoft.com/kb/2588635/zh-tw (繁体)
- LINQ to Entities 查询中的标准查询运算符
投影和筛选方法 投影指的是转换的结果集到所需的窗体中的元素. 例如,可以从结果集中的每个对象投影所需的属性子集,可以投影一个属性并对其执行数学计算,也可以从结果集投影整个对象. 投影方法有 Selec ...
- LINQ to Entities不识别方法***,因此该方法无法转换为存储表达式
我的程序里有这么一段代码: order.OrderExpressInfo = (from oei in orderExpressRepository.Entities where oei.OrderI ...
- Linq To Entities 及其相关(进阶)
上篇我们讲解了Linq To Entities的一些基本操作,这篇我们主要是讲解一些比较高级的东西:存储过程查询,SQL语句查询以及表达式树. 存储过程 首先来讲解存储过程查询. //Query a ...
- LINQ to Entities 查询语法
转自: http://www.cnblogs.com/asingna/archive/2013/01/28/2879595.html 实体框架(Entity Framework )是 ADO.NET ...
随机推荐
- java基础系列--Exception异常处理
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/7191280.html 1.概述 Java代码中的异常处理是非常重要的一环,从代码中可以看到 ...
- jenkins2 -pipeline 常用groovy脚本
jenkins2的核心是pipeline,pipeline的核心是groovy. 那有一些基础的groovy是必须经常使用的,如变量赋值,变量引用,打印变量,输出字符,任务调用,循环判断等. Groo ...
- 极简的Android RecyclerView Adapter(使用DataBinding)
阅读本篇文章需要读者对Android Databinding和RecyclerView有一定的了解. 简介 我们知道,DataBinding的核心理念是数据驱动.数据驱动驱动的目标就是View,使用D ...
- java 线程之concurrent中的常用工具 CyclicBarrier
一.CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序 ...
- 【Mysql】复制表结构+数据(转)
1:复制表结构及数据到新表 select * into 目的数据库名.dbo.目的表名 from 原表名 select * into my0735home.dbo.infoMianTest from ...
- Hbase 基础 - shell 与 客户端
版权说明: 本文章版权归本人及博客园共同所有,转载请标明原文出处(http://www.cnblogs.com/mikevictor07/),以下内容为个人理解,仅供参考. 一.简介 Hbase是在 ...
- Vue2源码分析-逻辑梳理
很久之前就看完vue1,但是太懒就一直没写博客,这次打算抽下懒筋先把自己看过了记录下来,否则等全部看完,估计又没下文了 看源码总需要抱着一个目的,否则就很难坚持下去,我并没做过vue的项目,我几乎很少 ...
- 6步就能搞出个react网站哈,玩一把!
1.安装mk-tools命令行工具 $ npm i -g mk-tools 2.创建空website $ mk website myDemo $ cd myDemo 3.clone应 ...
- Monotonicity 2[POI2010]
题目描述 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k].选出一个长度为L的子序列(不要求连续),要求这个子序列的第i项和第i+1项的的大小关系为s[(i-1 ...
- 整理自己的.net工具库
前言 今天我会把自己平日整理的工具库给开放出来,提供给有需要的朋友,如果有朋友平常也在积累欢迎提意见,我会乐意采纳并补充完整.按照惯例在文章结尾给出地址^_^. 之前我开放其他源码的时候(Framew ...