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

LINQ查询表达式基础

什么是查询?

查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织。 查询与它生成的结果不同。

查询表达式是什么?

查询表达式是以查询语法表示的查询。 查询表达式是一流的语言构造。 它如同任何其他表达式一样,可以在 C# 表达式有效的任何上下文中使用。 查询表达式由一组用类似于 SQL 或 XQuery 的声明性语法所编写的子句组成。 每个子句依次包含一个或多个 C# 表达式,而这些表达式可能本身就是查询表达式,或者包含查询表达式。

查询表达式必须以 from 子句开头,且必须以 select 或 group 子句结尾。 在第一个 from 子句与最后一个 select 或 group 子句之间,可以包含以下这些可选子句中的一个或多个:where、orderby、join、let,甚至是其他 from 子句。 还可以使用 into 关键字启用 join 或 group 子句的结果,作为同一查询表达式中更多查询子句的源。

查询变量

在 LINQ 中,查询变量是存储查询而不是查询结果的任何变量。 更具体地说,查询变量始终是可枚举类型,在 foreach 语句或对其 IEnumerator.MoveNext() 方法的直接调用中循环访问时会生成元素序列。

下面的代码示例演示一个简单查询表达式,它具有一个数据源、一个筛选子句、一个排序子句并且不转换源元素。 select 子句标志着查询的结束。

// Data source.
int[] scores = [90, 71, 82, 93, 75, 82];// Query Expression.
IEnumerable<int> scoreQuery = //query variablefrom score in scores //requiredwhere score > 80 // optionalorderby score descending // optionalselect score; //must end with select or group// Execute the query to produce the results
foreach (var testScore in scoreQuery)
{Console.WriteLine(testScore);
}// Output: 93 90 82 82

在前面的示例中,scoreQuery 是一个 查询变量, 有时仅被称作 查询。 查询变量不存储在 foreach 循环生成中的任何实际结果数据。 并且当 foreach 语句执行时,查询结果不会通过查询变量 scoreQuery 返回。 而是通过迭代变量 testScore 返回。

查询变量可以存储采用查询语法、方法语法或是两者的组合进行表示的查询。 在以下示例中,queryMajorCities 和 queryMajorCities2 都是查询变量:

City[] cities = [new City("Tokyo", 37_833_000),new City("Delhi", 30_290_000),new City("Shanghai", 27_110_000),new City("São Paulo", 22_043_000)
];//Query syntax
IEnumerable<City> queryMajorCities =from city in citieswhere city.Population > 30_000_000select city;// Execute the query to produce the results
foreach (City city in queryMajorCities)
{Console.WriteLine(city);
}// Output:
// City { Name = Tokyo, Population = 37833000 }
// City { Name = Delhi, Population = 30290000 }// Method-based syntax
IEnumerable<City> queryMajorCities2 = cities.Where(c => c.Population > 30_000_000);
// Execute the query to produce the results
foreach (City city in queryMajorCities2)
{Console.WriteLine(city);
}
// Output:
// City { Name = Tokyo, Population = 37833000 }
// City { Name = Delhi, Population = 30290000 }

换句话来说,查询语法、方法语法其实就是LINQ语句跟LINQ方法,LINQ语句跟LINQ方法也可以混合着适用。


开始查询表达式

查询表达式必须以 from 子句开头。 它指定数据源以及范围变量。 范围变量表示遍历源序列时,源序列中的每个连续元素。

结束查询表达式

查询表达式必须以 group 子句或 select 子句结尾。

http://www.zskr.cn/news/71114.html

相关文章:

  • 2025 年羽绒蓬松度天花板!这 5 家羽绒供应商凭什么征服高端市场?
  • 2025除尘羽绒工厂怎么选?这 5 家实力派企业值得关注
  • MATLAB归一化随机共振代码
  • 全球雇佣好帮手!国际 EOR 服务商推荐Safeguard Global,企业跨境雇佣不踩坑
  • 2025年上海代办注册公司排行榜:注册公司代办要花多少钱?
  • 读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter3Chapter4
  • 深入解析:TDengine 字符串函数 CHAR_LENGTH 用户手册
  • 2025年重庆建筑资质代办公司排名TOP5:重庆海湖集团实力
  • 完整教程:零基础入门C语言之文件操作
  • 上海打印机租赁/二手打印机怎么买靠谱/打印机维修/打印机上门维修推荐——上海博莱办公-服务覆盖上海十六个区
  • 重庆高性价比建筑总包资质代办:建筑总包资质转让企业甄选指南,
  • 【2025最新版】傲游浏览器下载安装及使用教程(资源嗅探/云同步/密码大师完整指南)
  • 读智能新物种03新物种
  • 2025年12月中国企业市场地位证明机构哪家比较好?合规赋能全场景,精准匹配高价值伙伴
  • 2025年12月幽门螺旋杆菌产品排行榜:科学防控+权威测评TOP5,避坑指南全解析
  • strcpystrncpy
  • 免费毕业论文工具推荐:6款AI神器助力高效完成论文写作(附真实文献引用与查重优化)
  • 2025北京留学中介机构哪个最好去香港
  • 2025温州奢侈品名包回收TOP5权威推荐:看哪家口碑好
  • 2026寒假第三十三届全国高校具身智能机器人与嵌入式Linux高级师资培训通知
  • 深入解析:51单片机基础-GPIO结构详解
  • 一个注重隐私的AI图像生成工具:如何优雅地拥有一张“体面证件照”
  • Deepseek优化排名公司排行榜前十推荐
  • pbootcms模板提交留言表单后,如何跳转到指定的网址?(PbootCMS 提交留言表单后跳转到指定网址的实现方法)
  • 2025北京监理公司推荐:基于多维度评估与行业数据解析
  • 2025年12月蒸汽发生器品牌排名榜单:多维度参数对比与选择建议
  • python打包解包
  • 2025年12月北京陪诊公司综合排名:服务对比与行业现状解析
  • 2025化工防爆冷库/医药冷库服务商TOP5权威推荐:看哪家