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)
最新文章
- IntelliJ IDEA 配置运行程序
- 在centos5开启telnet服务并验证
- mybatis配置log4j显示sql语句
- MyEclipse项目中的java文件的图标变成空心的问题
- HDU 3090 (贪心)
- CSS强制文本在一行内显示若有多余字符则使用省略号表示
- javaweb学习总结十九(http协议概述以及http请求信息分析)
- $_SERVER参数的含义
- MT【314】正切比值
- VMware下安装linux虚拟机
- Mysql -- 外键的变种 三种关系
- Shiro与基本web环境整合登陆验证实例
- Day24--Python--常用模块03--正则表达式
- 使用TensorFlow遇到的若干问题
- android 开发 View _1_ View的子类们 和 视图坐标系图
- MT【20】一道三次函数的难题
- 20145216史婧瑶 《网络对抗》 MSF基础应用
- seo-摘自网友
- springboot-10-前端页面整合, thymeleaf, freemarker, jsp 模板使用
- [UI] 精美UI界面欣赏[6]
热门文章
- Vue.js学习笔记(三) - 修饰符
- PHP获取文件夹中的所有文件(包括子目录)
- java用户界面——加载图片 jpg GIF
- [vijos 1642]班长的任务 [树形dp]
- Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑
- ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库
- 如何修改script.bin/script.fex
- salesforce零基础学习(七十六)顺序栈的实现以及应用
- discuz相关总结
- (1)xcode基本设置和控制器等介绍