LINQ 查询表达式(C# 编程指南)
LINQ 查询表达式(C# 编程指南)
语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上。 借助于 LINQ,查询现在已是高级语言构造,就如同类、方法、事件等等。
对于编写查询的开发人员来说,LINQ 最明显的“语言集成”部分是查询表达式。 查询表达式是使用 C# 3.0 中引入的声明性查询语法编写的。 通过使用查询语法,您甚至可以使用最少的代码对数据源执行复杂的筛选、排序和分组操作。 您使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO.NET 数据集、XML 文档和流以及 .NET 集合中的数据。
下面的示例演示了完整的查询操作。 完整操作包括创建数据源、定义查询表达式,以及在 foreach 语句中执行查询。
class LINQQueryExpressions {static void Main(){// Specify the data source.int[] scores = new int[] { 97, 92, 81, 60 }; // Define the query expression. IEnumerable<int> scoreQuery = from score in scores where score > 80 select score; // Execute the query. foreach (int i in scoreQuery) { Console.Write(i + " "); } } } // Output: 97 92 81
有关 C# 中的 LINQ 基础知识的更多信息,请参见 Getting Started with LINQ in C#。
查询表达式可用于查询和转换来自任意支持 LINQ 的数据源中的数据。 例如,单个查询可以从 SQL 数据库检索数据,并生成 XML 流作为输出。
查询表达式容易掌握,因为它们使用许多常见的 C# 语言构造。 有关更多信息,请参见 Getting Started with LINQ in C#。
查询表达式中的变量都是强类型的,但许多情况下您不需要显式提供类型,因为编译器可以推断类型。 有关更多信息,请参见Type Relationships in LINQ Query Operations (C#)。
在您循环访问 foreach 语句中的查询变量之前,不会执行查询。 有关更多信息,请参见 Introduction to LINQ Queries (C#)。
在编译时,根据 C# 规范中设置的规则将查询表达式转换为“标准查询运算符”方法调用。 任何可以使用查询语法表示的查询也可以使用方法语法表示。 但是,在大多数情况下,查询语法更易读和简洁。 有关更多信息,请参见 C# 语言规范和Standard Query Operators Overview。
作为编写 LINQ 查询的一项规则,建议尽量使用查询语法,只在必需的情况下才使用方法语法。 这两种不同形式在语义或性能上没有区别。 查询表达式通常比用方法语法编写的等效表达式更易读。
一些查询操作,如 Count<TSource> 或 Max,没有等效的查询表达式子句,因此必须表示为方法调用。 方法语法可以通过多种方式与查询语法组合。 有关更多信息,请参见Query Syntax and Method Syntax in LINQ (C#)。
查询表达式可以编译为表达式树或委托,具体取决于查询所应用到的类型。 IEnumerable<T> 查询编译为委托。 IQueryable 和 IQueryable<T> 查询编译为表达式树。 有关更多信息,请参见表达式树(C# 和 Visual Basic)。
posted on 2016-11-12 10:03 时空观察者9号 阅读(...) 评论(...) 编辑 收藏
LINQ 查询表达式(C# 编程指南)相关推荐
- LINQ之路 5:LINQ查询表达式
书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询表达式(Query Expression). LINQ方法语法的本质是通过扩展方法和Lambda表达式来创建查询.C# ...
- [深入学习C#]LINQ查询表达式详解(2)——查询表达式的转换
转载自诗人江湖老,原文地址 C#在执行LINQ查询表达式的时候,并不会指定其执行语义,而是将查询表达式转换为遵循查询表达式模式的方法的调用.具体而言,查询表达式将转换为以下名称的调用:Where.Se ...
- [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询
此文章非原创,转载自诗人江湖老,原文地址 在Git上下载源码 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找.过滤等等常见的任务的时候 ...
- 「C#」LinQ查询表达式
关于LinQ查询表达式 语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称. LINQ 通过提供处理各种数据源和数据格式的数据的一致模型,简化了每种数据源或数据格式再查询时 ...
- LINQ查询表达式基础
LINQ,语言集成查询(Language Integrated Query)是一组用C#和Visual Basic语言的扩展. 对于编写查询的开发人员来说,LINQ 最明显的"语言集成&qu ...
- C#中其他简单LINQ查询表达式的简单使用介绍
本文主要记录下其他简单LINQ表达式,因为比较简单,记录下以后方便回忆,本文也会持续更新. 一些有用的LINQ扩展方法: LINQ表达式 作用 是否延迟查询 Range 生成指定范围内的整数的序列 ...
- LINQ查询表达式和LAMBDA点标记方法基础
在上一篇文章中,我们介绍了LINQ的一些基本用法,这一篇我们来看下另一种更简洁更优雅的表达式,Lambda表达式,也可以叫做点标记方法. 相信大家在实际工作中都用到过这两种方式,下面我们还是用实例来看 ...
- (zz)Lambda 表达式(C# 编程指南)
https://msdn.microsoft.com/zh-cn/library/bb397687.aspx Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数.通过使用 lambd ...
- C#编程 LINQ查询
LINQ查询表达式 约束 LINQ查询表达式必须以from子句开头,以select或group子句结束 关键字 from...in...:指定要查找的数据以及范围变量,多个from子句则表示从多个数据 ...
最新文章
- Revit结构2021-2022从零到精通
- TensorFlow练习23: “恶作剧”
- android WebView总结
- std::map char*做key
- python搞笑代码-【转】 Python 程序员的进化--搞笑版
- 如何实现 C/C++ 与 Python 的通信?
- C++STL算法速查
- 15、工作流Web流程设计器及表单设计器
- webstorm使用指南
- ucgui button
- 数据流图、业务流程图、E-R图、系统功能结构图、程序流程图
- App上架各大应用市场的地址及操作方法
- Python OpenCV真香——去除照片白色背景
- np.percentile()函数
- 自己手写的一个关于中英文切换时间的工具类
- HTML nofollow 属性
- js 实现页面语音播报
- CleanMyMac X2022最新mac超强清理系统工具
- c语言如何使用json,C语言:json库的使用
- 一个软件公司需要多少前端_自己开发一个app需要多少钱,多少时间
热门文章
- CentOS7中使用Docker安装SVN以及配置账号权限
- DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印
- Jquery中使用ajax传json参数并从SpringBoot后台Controller返回消息
- 使用JProfiler查看GC Roots
- 服务器相关命令整理[不断更新ing]
- ibm服务器虚拟化报价,IBM x86 服务器虚拟化服务.pdf
- 神策数据汽车行业解决方案重磅上线,全面赋能车企数字化转型
- 直播预告丨挖掘客户生命周期价值,寻迹券商业务增长
- 神策数据携手百丽国际,专注品牌零售行业数字化未来
- MongoDB命令--自用记录