windows C#-查询表达式基础(三)

select 子句

使用 select 子句可生成所有其他类型的序列。 简单 select 子句只生成类型与数据源中包含的对象相同的对象的序列。 在此示例中,数据源包含 Country 对象。 orderby 子句只按新顺序对元素进行排序,而 select 子句生成重新排序的 Country 对象的序列。

IEnumerable<Country> sortedQuery =from country in countriesorderby country.Areaselect country;

select 子句可以用于将源数据转换为新类型的序列。 此转换也称为投影。 在下面的示例中,select 子句对只包含原始元素中的字段子集的匿名类型序列进行投影。 新对象使用对象初始值设定项进行初始化。

var queryNameAndPop =from country in countriesselect new{Name = country.Name,Pop = country.Population};

因此,在此示例中,var 是必需的,因为查询会生成匿名类型。

使用“into”延续

可以在 select 或 group 子句中使用 into 关键字创建存储查询的临时标识符。 如果在分组或选择操作之后必须对查询执行额外查询操作,则可以使用 into 子句。 在下面的示例中,countries 按 1000 万范围,根据人口进行分组。 创建这些组之后,更多子句会筛选出一些组,然后按升序对组进行排序。 若要执行这些额外操作,需要由 countryGroup 表示的延续。

// percentileQuery is an IEnumerable<IGrouping<int, Country>>
var percentileQuery =from country in countrieslet percentile = (int)country.Population / 10_000_000group country by percentile into countryGroupwhere countryGroup.Key >= 20orderby countryGroup.Keyselect countryGroup;// grouping is an IGrouping<int, Country>
foreach (var grouping in percentileQuery)
{Console.WriteLine(grouping.Key);foreach (var country in grouping){Console.WriteLine(country.Name + ":" + country.Population);}
}
筛选、排序和联接

在开头 from 子句与结尾 select 或 group 子句之间,所有其他子句(where、join、orderby、from、let)都是可选的。 任何可选子句都可以在查询正文中使用零次或多次。

where 子句

使用 where 子句可基于一个或多个谓词表达式,从源数据中筛选出元素。 以下示例中的 where 子句具有一个谓词及两个条件。

IEnumerable<City> queryCityPop =from city in citieswhere city.Population is < 200000 and > 100000select city;
orderby 子句

使用 orderby 子句可按升序或降序对结果进行排序。 还可以指定次要排序顺序。 下面的示例使用 Area 属性对 country 对象执行主要排序。 然后使用 Population 属性执行次要排序。

IEnumerable<Country> querySortedCountries =from country in countriesorderby country.Area, country.Population descendingselect country;

ascending 关键字是可选的;如果未指定任何顺序,则它是默认排序顺序。 

join 子句

使用 join 子句可基于每个元素中指定的键之间的相等比较,将一个数据源中的元素与另一个数据源中的元素进行关联和/或合并。 在 LINQ 中,联接操作是对元素属于不同类型的对象序列执行。 联接了两个序列之后,必须使用 select 或 group 语句指定要存储在输出序列中的元素。 还可以使用匿名类型将每组关联元素中的属性合并到输出序列的新类型中。 下面的示例关联其 Category 属性与 categories 字符串数组中一个类别匹配的 prod 对象。 筛选出其 Category 不与 categories 中的任何字符串匹配的产品。select 语句会投影其属性取自 cat 和 prod 的新类型。

var categoryQuery =from cat in categoriesjoin prod in products on cat equals prod.Categoryselect new{Category = cat,Name = prod.Name};

还可以通过使用 into 关键字将 join 操作的结果存储到临时变量中来执行分组联接。 

let 子句

使用 let 子句可将表达式(如方法调用)的结果存储在新范围变量中。 在下面的示例中,范围变量 firstName 存储 Split 返回的字符串数组的第一个元素。

string[] names = ["Svetlana Omelchenko", "Claire O'Donnell", "Sven Mortensen", "Cesar Garcia"];
IEnumerable<string> queryFirstNames =from name in nameslet firstName = name.Split(' ')[0]select firstName;foreach (var s in queryFirstNames)
{Console.Write(s + " ");
}//Output: Svetlana Claire Sven Cesar
查询表达式中的子查询

查询子句本身可能包含查询表达式,这有时称为子查询。 每个子查询都以自己的 from 子句开头,该子句不一定指向第一个 from 子句中的相同数据源。 例如,下面的查询演示在 select 语句用于检索分组操作结果的查询表达式。

var queryGroupMax =from student in studentsgroup student by student.Year into studentGroupselect new{Level = studentGroup.Key,HighestScore = (from student2 in studentGroupselect student2.ExamScores.Average()).Max()};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/15640.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

实验二:Docker存储配置与管理

容器与非持久化数据 非持久化数据是不需要保存的那些数据&#xff0c;容器本地存储中的数据就属于这种类型。容器创建时会创 建非持久化存储&#xff0c;这是容器全部文件和文件系统保存的地方。 默认情况下&#xff0c;在容器内创建的所有文件都存储在可写容器层&#xff0c…

Java 日志框架(一)

1、Java 日志框架 问题&#xff1a; 控制日志输出的内容和格式控制日志输出的位置面向接口开发 —— 日志的门面&#xff08;类似 JDBC&#xff09; 1.1、现有的日志框架 1.1.1、日志门面 JCL、slf4j 1.1.2、日志实现 JUL、logback、log4j、log4j2 2、JUL JUL 全称是 …

i春秋-GetFlag(HTTP请求方法使用,XXF伪造ip)

练习平台地址 竞赛中心 题目描述 题目内容 一打开就是一Not Found&#xff0c;以为是服务器挂了 解题 在页面中发现了404.php&#xff0c;尝试访问 在页面源码和headers中没有发现有用信息 返回去看首页的headers有没有信息 发现首页的响应头中有个奇怪的X-Method&#xf…

pgSQL-timescaledb复制表出现的问题

今日在工作中&#xff0c;需要复制一张timescaledb表&#xff0c;pgAdmin上复制一直未成功&#xff0c;或者我找错位置了。 1.我使用Navicate连接pgSQL&#xff0c;连上后选中相应表&#xff0c;右键复制结构即可 2.复制结构后&#xff0c;到pgAdmin中&#xff0c;将对应表下的…

无人机应用场景:石油管道巡检技术详解

无人机在石油管道巡检中的应用&#xff0c;以其高效、便捷、灵活的特点&#xff0c;为石油管道的安全管理提供了有力支持。以下是对无人机在石油管道巡检技术方面的详细解析&#xff1a; 一、无人机巡检技术的概述 无人机巡检技术是指利用无人机搭载各种传感器和检测设备&…

vue3+ant design vue实现日期等选择器点击右上角叉号默认将值变为null,此时会影响查询等操作~

1、效果图 2、思路&#xff1a;通过监听操作时间绑定的值是否存在&#xff0c;若存在将其改为空数组即可 3、代码&#xff1a; <a-form-item name"beginDate" label"操作日期" labelAlign"left"><a-range-picker v-model:value"…

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

AutoSar AP简单多绑定总结

文章主要介绍了多绑定相关内容&#xff0c;具体如下&#xff1a; 多绑定概念 某个代理类 / 骨架类不同实例间的技术传输存在差异&#xff0c;多绑定用于解决该情况&#xff0c;其产生可能源于代理类与不同骨架通信采用不同传输 / IPC&#xff0c;或同一骨架实例的不同代理实例…

软件测试面试大全(含答案+文档)

1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自己&…

Windows docker下载minio出现“Using default tag: latestError response from daemon”

Windows docker下载minio出现 Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded 此类情况&#xff0c;一般为镜像地址问题。 {"registry-mirrors": ["https://docker.re…

Chapter 15 组件通信

1 组件通信方式 在 Vue 中&#xff0c;组件通信是指多个组件之间传递数据或消息的方式。 由于每个组件的数据是独立的&#xff0c;它们不能直接访问其他组件的数据&#xff0c;因此需要使用一些特定的方式来实现数据传递和通信。 【组件通信方式】 1. 父子组件通信&#xff1…

不仅能够实现前后场的简单互动,而且能够实现人机结合,最终实现整个巡检流程的标准化的智慧园区开源了

智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。充分利用现有…

利用正则表达式批量修改文件名

首先&#xff0c; 我们需要稍微学习一下正则表达式的使用方式&#xff0c;可以看这里&#xff1a;Notepad正则表达式使用方法_notepad正则匹配-CSDN博客 经过初步学习之后&#xff0c;比较重要的内容我做如下转载&#xff1a; 元字符是正则表达式的基本构成单位&#xff0c;它们…

【 LLM论文日更|检索增强:大型语言模型是强大的零样本检索器 】

论文&#xff1a;https://aclanthology.org/2024.findings-acl.943.pdf代码&#xff1a;GitHub - taoshen58/LameR机构&#xff1a;悉尼科技大学 & 微软 & 阿姆斯特丹大学 & 马里兰大学领域&#xff1a;retrieval & llm发表&#xff1a;ACL2024 研究背景 研究…

驾校增加无人机培训项目可行性技术分析

驾校增加无人机培训项目的可行性技术分析&#xff0c;需要从市场需求、技术基础、政策支持、培训体系构建及运营等多个维度进行综合考量。以下是对这些方面的详细分析&#xff1a; 一、市场需求分析 1. 行业应用广泛&#xff1a;无人机在航拍、农业、环境监测、地理测绘、电力…

MFC1(note)

引言 在学习SDK后我们发现&#xff0c;写消息好麻烦&#xff0c;处理消息更麻烦 处理消息效率低发送消息效率低 所以把SDK中这些消息全部封装好 MFC封装了windows 的大部分API 这里说一下QT架构跨平台 MFC用得如何取决于你SDK的水平 创建 如果打开没有MFC 一般勾选以下…

OpenCV3.4.0 添加contrib模块过程记录

一 准备文件 下载这些文件&#xff0c;可以从GitHub/Gitee很容易找到&#xff1a; source-3.4.0.zip 源文件opencv_3rdparty-ffmpeg-master_20171009 opencv_3rdparty-ippicv-master_20170822 opencv_contrib-3.4.0.zip …

APT 参与者将恶意软件嵌入 macOS Flutter 应用程序中

发现了一些恶意软件样本&#xff0c;这些样本据信与朝鲜民主主义人民共和国 (DPRK)&#xff08;又称北朝鲜&#xff09;有关&#xff0c;这些样本使用 Flutter 构建&#xff0c;Flutter 的设计可以对恶意代码进行混淆。JTL 深入研究了恶意代码的工作原理&#xff0c;以帮助保护…

论文学习——一种基于决策变量分类的动态约束多目标进化算法

论文题目&#xff1a; A dynamic constrained multiobjective evolutionary algorithm based on decision variable classification 一种基于决策变量分类的动态约束多目标进化算法&#xff08;Yinan Guo a,b, Mingyi Huang a, Guoyu Chen a,*, Dunwei Gong c, Jing Liang d, …

基于微信小程序的高校实习管理系统设计与实现,LW+源码+讲解

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自…