当前位置: 首页 > article >正文

windows C#-LINQ概述

语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。 数据查询历来都表示为简单的字符串,没有编译时类型检查或 IntelliSense 支持。 此外,需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。

对于编写查询的开发者来说,LINQ 最明显的“语言集成”部分就是查询表达式。 查询表达式采用声明性查询语法编写而成。 使用查询语法,可以用最少的代码对数据源执行筛选、排序和分组操作。 可使用相同的基本查询表达式模式来查询和转换 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据。

下面的示例展示了完整的查询操作。 完整的操作包括创建数据源、定义查询表达式和在 foreach 语句中执行查询。

// Specify the data source.
int[] scores = { 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
查询表达式概述
  • 查询表达式可用于查询并转换所有启用了 LINQ 的数据源中的数据。 例如,通过一个查询即可检索 SQL 数据库中的数据,并生成 XML 流作为输出。
  • 查询表达式易于掌握,因为它们使用了许多熟悉的 C# 语言构造。
  • 查询表达式中的变量全都是强类型,尽管在许多情况下,无需显式提供类型,因为编译器可以推断出。
  • 只有在循环访问查询变量后,才会执行查询(例如,在 foreach 语句中)。 有关详细信息,请参阅 LINQ 查询简介。
  • 在编译时,查询表达式根据 C# 规范规则转换成标准查询运算符方法调用。 可使用查询语法表示的任何查询都可以使用方法语法进行表示。 不过,在大多数情况下,查询语法的可读性更高,也更为简洁。 
  • 通常,我们建议在编写 LINQ 查询时尽量使用查询语法,并在必要时尽可能使用方法语法。 这两种不同的形式在语义或性能上毫无差异。 查询表达式通常比使用方法语法编写的等同表达式更具可读性。
  • 一些查询操作(如 Count 或 Max)没有等效的查询表达式子句,因此必须表示为方法调用。 可以各种方式结合使用方法语法和查询语法。 
  • 查询表达式可被编译成表达式树或委托,具体视应用查询的类型而定。 IEnumerable<T> 查询编译为委托。 IQueryable 和 IQueryable<T> 查询编译为表达式树。 

http://www.kler.cn/a/393045.html

相关文章:

  • C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
  • LLMs 如何处理相互矛盾的指令?指令遵循优先级实验
  • 2024年11月13日
  • Web大学生网页作业成品——婚礼婚纱网页设计与实现(HTML+CSS)(6个页面)
  • Chrome使用IE内核
  • ReactPress技术揭秘
  • win32com库基于wps对Word文档的基础操作
  • 手动安装Ubuntu系统中的network-manager包(其它包同理)
  • DNS面临的4大类共计11小类安全风险及防御措施
  • 【go从零单排】go语言中testing的几种类型
  • Kafka参数了解
  • Find My电子体温计|苹果Find My技术与体温计结合,智能防丢,全球定位
  • PostgreSQL序列:创建、管理与高效应用指南
  • [ Linux 命令基础 7 ] Linux 命令详解-磁盘管理相关命令
  • 《高级 SQL 技巧:提升查询效率与灵活性》
  • Bootstrap和jQuery开发案例
  • 动态规划 —— 子数组系列-环形子数组的最大和
  • react中如何在一张图片上加一个灰色蒙层,并添加事件?
  • C#进阶-快速了解IOC控制反转及相关框架的使用
  • 2024-09-01 - 分布式集群网关 - LoadBalancer - 阿里篇 - 流雨声
  • Spring Boot项目的配置文件有哪些?加载优先级谁最高?配置优先级谁最高?
  • <项目代码>YOLOv8 草莓成熟识别<目标检测>
  • 昇思25天学习打卡营第1天|快速入门
  • DBeaver 连接 OceanBase Oracle 租户
  • Spring框架之观察者模式 (Observer Pattern)
  • 全球经济风雨飘摇,OJK能带领印尼金融创新走多远?