当前位置: 首页 > 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.jsqmd.com/news/60575/

相关文章:

  • 2025 年羽绒蓬松度天花板!这 5 家羽绒供应商凭什么征服高端市场?
  • 狂揽 19000+ Star 的国产开源项目
  • 2025除尘羽绒工厂怎么选?这 5 家实力派企业值得关注
  • 【ETCD】ETCD单节点二进制部署(TLS) - 教程
  • 掌握比特币:开放区块链编程全解析
  • GEO优化源头厂家口碑排行,GEO优化AI搜索/广告全案策划、制作、发布/短视频矩阵/GEO优化AI工具排名GEO优化品牌口碑推荐榜
  • 网站发布时间修改怎么修改(如何在网站后台修改文章发布时间)
  • pbootcms站点信息调用(PbootCMS站点信息调用标签详解与使用指南)
  • MATLAB归一化随机共振代码
  • 2025年11月绩效管理咨询公司专业评价:行业标杆机构实力排行
  • 全球雇佣好帮手!国际 EOR 服务商推荐Safeguard Global,企业跨境雇佣不踩坑
  • pbootcms模板tag标签调用(PbootCMS Tag标签调用全攻略:从基础到进阶)
  • pbootcms上传缩略图截取尺寸缩小变模糊解决方案(PbootCMS缩略图模糊问题解决方案)
  • 2025年减震隔音板,隔音板批发,隔音板安装厂家最新推荐:企业减震工艺与售后安装保障解读
  • Nuxt.js v4中使用quill富文本组件
  • 2025年牛油火锅底料配方批发厂家权威推荐榜单:火锅底料生产厂家‌/火锅底料工厂‌/火锅底料厂家‌精选
  • pbootcms模板导航调用方法(PbootCMS模板导航调用方法指南)
  • 仓储接口无法解析出仓储实现实例时需要手动加载仓储实现的程序集
  • 2025年上海代办注册公司排行榜:注册公司代办要花多少钱?
  • 2025年温州五大高复实力学校排行榜,资质齐全的高复专业学校
  • 读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter3Chapter4
  • webpack配置不当导致接口信息泄露-实战复盘
  • 海外 EOR 名义雇主服务商推荐:海外雇佣公司精选
  • Raft如何维持日志一致性
  • 2025 年防爆灯源头厂家最新推荐榜,技术实力与市场口碑深度解析,挖掘优质货源平台防爆灯,工厂防爆灯,厂用防爆灯,粉尘防爆灯公司推荐
  • 2025年热门的花园铝艺凉亭/小院铝艺凉亭实力厂家TOP推荐榜
  • 深入解析:TDengine 字符串函数 CHAR_LENGTH 用户手册
  • 2025 年高端羽绒供应商指南:鸿基羽绒领衔,从源头守护品质
  • 完整教程:零基础入门C语言之文件操作
  • 2025年重庆建筑资质代办公司排名TOP5:重庆海湖集团实力