C# LING查询语法学习,扩展方法的使用
class Program
{
#region 示例1:不使用LINQ查询数组
//static void Main(string[] args)
//{
// int[] nums = { 1, 7, 2, 6, 5, 4, 9, 13, 20 };
// List<int> list = new List<int>();
// foreach (int item in nums)
// {
// if (item % 2 != 0)
// list.Add(item);
// }
// list.Sort();
// // list.Reverse();
// foreach (int item in list)
// {
// Console.WriteLine(item);
// }
// Console.ReadLine();
//}
#endregion
#region 示例2:使用LINQ技术查询数组
//static void Main(string[] args)
//{
// int[] nums = { 1, 7, 2, 6, 5, 4, 9, 13, 20 };
// var list = from num in nums
// where num % 2 != 0
// orderby num descending
// select num;
// foreach (int item in list)
// {
// Console.WriteLine(item);
// }
// Console.ReadLine();
//}
#endregion
#region 示例3:扩展方法Select()应用
//static void Main(string[] args)
//{
// int[] nums = { 1, 7, 2, 6, 5, 4, 9, 13, 20 };
// var list = nums.Select(item => item * item);
// foreach (int item in list)
// {
// Console.WriteLine(item);
// }
// Console.ReadLine();
//}
#endregion
#region 示例4:扩展方法Where()应用
//static void Main(string[] args)
//{
// int[] nums = { 1, 7, 2, 6, 5, 4, 9, 13, 20 };
// var list = nums
// .Where(item => item % 2 == 0)
// .Select(i => i * i);
// foreach (int item in list)
// {
// Console.WriteLine(item);
// }
// Console.ReadLine();
//}
#endregion
#region 示例5:扩展方法OrderBy()应用
//static void Main(string[] args)
//{
// int[] nums = { 1, 7, 2, 6, 5, 4, 9, 13, 20 };
// var list = nums
// .Where(item => item % 2 == 0)
// .Select(i => i * i)
// .OrderBy(item => item);
// foreach (int i in list)
// {
// Console.WriteLine(i);
// }
// Console.ReadLine();
//}
//static void Main(string[] args)
//{
// string[] nums = { "张勇", "王琦", "刘静", "赵鑫鑫",
// "杜丽", "马俊才", "那英", "成龙", };
// var list = nums
// .Where(item => item.Length == 2)
// .Select(item => item)
// .OrderByDescending(item => item.Substring(0, 1));
// foreach (string item in list)
// {
// Console.WriteLine(item);
// }
// Console.ReadLine();
//}
#endregion
#region 示例6:扩展方法GroupBy()应用
//static void Main(string[] args)
//{
// string[] nums = { "张勇", "王琦", "刘静", "赵鑫鑫",
// "杜丽", "马俊才", "那英", "成龙","王丽", "杜宇","马晓","刘丽","马大哈",};
// var list = nums
// .Where(item => item.Length == 2)
// .Select(item => item)
// .GroupBy(item => item.Substring(0, 1));
// foreach (var groupItem in list)
// {
// Console.WriteLine("-------------------");
// Console.WriteLine("分组字段:{0}", groupItem.Key);
// foreach (var item in groupItem)
// {
// Console.WriteLine(item);
// }
// }
// Console.ReadLine();
//}
#endregion
#region 示例7:断点调试LINQ的查询时机
//static void Main(string[] args)
//{
// int[] nums = { 1, 7, 2, 6, 5, 4, 9, 13, 20 };
// var list = nums
// .Where(item => item % 2 == 0)
// .Select(item => item * item)
// .OrderBy(item => item);
// foreach (int i in list)
// {
// Console.WriteLine(i);
// }
// Console.ReadLine();
//}
#endregion
#region 示例8:查询的立即执行
//static void Main(string[] args)
//{
// int[] nums = { 1, 7, 2, 6, 5, 4, 9, 13, 20 };
// var list = nums
// .Where(item => item % 2 == 0)
// .Select(item => item * item)
// .OrderBy(item => item)
// .Count();
// Console.WriteLine(list.ToString());
// Console.ReadLine();
//}
#endregion
#region 示例9:from子句的简单使用
//static void Main(string[] args)
//{
// ArrayList values = new ArrayList();
// for (int i = 0; i < 10; i++)
// { values.Add(i); }
// var list = from int item in values
// where item % 2 == 0
// select item;
// foreach (int item in list)
// { Console.WriteLine(item); }
// Console.ReadLine();
//}
#endregion
#region 示例10:复合from子句的使用
//static void Main(string[] args)
//{
// Student obj1 = new Student()
// {
// StuId = 1001,
// StuName = "学员1",
// ScoreList = new List<int>() { 90, 78, 54 }
// };
// Student obj2 = new Student()
// {
// StuId = 1002,
// StuName = "学员2",
// ScoreList = new List<int>() { 95, 88, 90 }
// };
// Student obj3 = new Student()
// {
// StuId = 1003,
// StuName = "学员3",
// ScoreList = new List<int>() { 79, 76, 89 }
// };
// 将学员封装到集合中
// List<Student> stuList = new List<Student>() { obj1, obj2, obj3 };
// 查询成绩包含95分以上的学员
// var result = from stu in stuList
// from score in stu.ScoreList
// where score >= 90
// select stu;
// 显示查询结果
// foreach (var item in result)
// {
// Console.WriteLine(item.StuName);
// }
// Console.ReadLine();
//}
#endregion
#region 示例11:多个from子句查询的使用
//static void Main(string[] args)
//{
// Student obj1 = new Student() { StuId = 1001, StuName = "学员1" };
// Student obj2 = new Student() { StuId = 1009, StuName = "学员9" };
// Student obj3 = new Student() { StuId = 1012, StuName = "学员12" };
// Student obj4 = new Student() { StuId = 1003, StuName = "学员3" };
// Student obj5 = new Student() { StuId = 1019, StuName = "学员19" };
// Student obj6 = new Student() { StuId = 1006, StuName = "学员6" };
// List<Student> stuList1 = new List<Student>() { obj1, obj2, obj3 };
// List<Student> stuList2 = new List<Student>() { obj4, obj5, obj6 };
// //查询学号大于1010的学员
// var result = from stu1 in stuList1
// where stu1.StuId >= 1010
// from stu2 in stuList2
// where stu2.StuId >= 1010
// select new { stu1, stu2 };
// //显示查询结果
// foreach (var item in result)
// {
// Console.WriteLine(item.stu1.StuName + " " + item.stu1.StuId);
// Console.WriteLine(item.stu2.StuName + " " + item.stu2.StuId);
// }
// Console.ReadLine();
//}
#endregion
#region 示例12:聚合函数Count
//static void Main(string[] args)
//{
// Student obj1 = new Student() { StuId = 1001, StuName = "学员1" };
// Student obj2 = new Student() { StuId = 1009, StuName = "学员9" };
// Student obj3 = new Student() { StuId = 1012, StuName = "学员12" };
// Student obj4 = new Student() { StuId = 1003, StuName = "学员3" };
// Student obj5 = new Student() { StuId = 1019, StuName = "学员19" };
// Student obj6 = new Student() { StuId = 1006, StuName = "学员6" };
// List<Student> stuList = new List<Student>() { obj1, obj2, obj3, obj4, obj5, obj6 };
// var count1 = (from c in stuList
// where c.StuId > 1010
// select c).Count();
// var count2 = stuList.Where(c => c.StuId > 1010).Count();
// Console.WriteLine("count1={0} count2={1}", count1, count2);
// Console.ReadLine();
//}
#endregion
#region 示例13:聚合函数Max、Min、Average
//static void Main(string[] args)
//{
// Student obj1 = new Student() { StuId = 1001, Age = 22, StuName = "学员1" };
// Student obj2 = new Student() { StuId = 1009, Age = 21, StuName = "学员9" };
// Student obj3 = new Student() { StuId = 1012, Age = 25, StuName = "学员12" };
// Student obj4 = new Student() { StuId = 1003, Age = 23, StuName = "学员3" };
// Student obj5 = new Student() { StuId = 1019, Age = 27, StuName = "学员19" };
// Student obj6 = new Student() { StuId = 1006, Age = 24, StuName = "学员6" };
// List<Student> stuList = new List<Student>() { obj1, obj2, obj3, obj4, obj5, obj6 };
// var maxAge = (from s in stuList
// select s.Age).Max();
// var minAge = stuList
// .Select(s => s.Age).Min();
// var avgAge = (from s in stuList
// select s.Age).Average();
// var sumAge = (from s in stuList
// select s.Age).Sum();
// Console.WriteLine("maxAge={0} minAge={1} avgAge={2} sumAge={3}",
// maxAge, minAge, avgAge, sumAge);
// Console.ReadLine();
//}
#endregion
#region 示例14:排序类ThenBy的使用
//static void Main(string[] args)
//{
// Student obj1 = new Student() { StuId = 1001, Age = 22, StuName = "学员1" };
// Student obj2 = new Student() { StuId = 1009, Age = 21, StuName = "学员9" };
// Student obj3 = new Student() { StuId = 1012, Age = 25, StuName = "学员12" };
// Student obj4 = new Student() { StuId = 1003, Age = 23, StuName = "学员3" };
// Student obj5 = new Student() { StuId = 1019, Age = 27, StuName = "学员19" };
// Student obj6 = new Student() { StuId = 1006, Age = 24, StuName = "学员6" };
// List<Student> stuList = new List<Student>() { obj1, obj2, obj3, obj4, obj5, obj6 };
// var stus1 = from s in stuList
// orderby s.StuName, s.Age, s.StuId
// select s;
// var stus2 = stuList
// .OrderBy(s => s.StuName)
// .ThenBy(s => s.Age)
// .ThenBy(s => s.StuId)
// .Select(p => p);
// foreach (var s in stus1)
// {
// Console.WriteLine(s.StuName);
// }
// Console.WriteLine("----------------------");
// foreach (var s in stus2)
// {
// Console.WriteLine(s.StuName);
// }
// Console.ReadLine();
//}
#endregion
#region 示例15:分区类查询
//static void Main(string[] args)
//{
// int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// //Skip方法用于跳过序列中指定数量的元素,并返回剩余的元素
// //Take方法用于从序列中获取指定数量的元素
// //SkipWhile方法用于跳过序列中满足指定条件的元素,直到遇到第一个不满足条件的元素为止
// //用于从序列的开头开始返回满足指定条件的元素,直到遇到第一个不满足条件的元素为止
// var list1 = nums.Skip(1).Take(3);
// var list2 = nums.SkipWhile(i => i % 3 != 0)
// .TakeWhile(i => i % 2 != 0);
// foreach (var item in list1) { Console.WriteLine(item); }
// Console.WriteLine("------------");
// foreach (var item in list2) { Console.WriteLine(item); }
// Console.ReadLine();
//}
#endregion
#region 示例16:集合类查询Distinct
//static void Main(string[] args)
//{
// int[] nums = { 1, 2, 2, 6, 5, 6, 7, 8, 8 };
// //使用LINQ的Distinct方法可以从集合中筛选出不重复元素
// var list = nums.Distinct();
// foreach (var item in list) { Console.WriteLine(item); }
// Console.ReadLine();
//}
#endregion
#region 示例17:生成类查询
static void Main(string[] args)
{
//Enumerable.Range方法用于生成一个指定范围内的整数序列
// Enumerable.Repeat方法用于创建一个包含指定元素重复多次的序列。它接受两个参数:要重复的元素和重复次数
var nums1 = Enumerable.Range(1, 10);
var nums2 = Enumerable.Repeat("LINQ best!", 10);
foreach (var item in nums1) { Console.WriteLine(item); }
Console.WriteLine("------------");
foreach (var item in nums2) { Console.WriteLine(item); }
Console.ReadLine();
}
#endregion
}
class Student
{
public int StuId { get; set; }
public int Age { get; set; }
public string StuName { get; set; }
public List<int> ScoreList { get; set; }
}
相关文章:
C# LING查询语法学习,扩展方法的使用
class Program { #region 示例1:不使用LINQ查询数组 //static void Main(string[] args) //{ // int[] nums { 1, 7, 2, 6, 5, 4, 9, 13, 20 }; // List<int> list new List<int>(); // foreach (int item in nums) …...

自然语言推断:微调BERT
微调BERT 自然语言推断任务设计了一个基于注意力的结构。现在,我们通过微调BERT来重新审视这项任务。自然语言推断是一个序列级别的文本对分类问题,而微调BERT只需要一个额外的基于多层感知机的架构,如下图中所示。 本节将下载一个预训练好的…...

立创EDA学习:设计收尾工作
布线整理 ShiftM,关闭铺铜显示 调整结束后再使用快捷键”ShiftM“打开铺铜 过孔 在空白区域加上一些GND过孔,连接顶层与底层的铺铜。放置好”过孔“后,隐藏铺铜,观察刚才放置的过孔有没有妨碍到其他器件 调整铺铜 先打开铺铜区&…...

ShardingSphere之ShardingJDBC客户端分库分表上
目录 什么是ShardingSphere? 客户端分库分表与服务端分库分表 ShardingJDBC客户端分库分表 ShardingProxy服务端分库分表 ShardingSphere实现分库分表的核心概念 ShardingJDBC实战 什么是ShardingSphere? ShardingSphere是一款起源于当当网内部的应…...
rust for循环步长-1,反向逆序遍历
fn main() {for i in (0..3).rev().step_by(1) {print!("{}", i);} } // 打印结果:210Trait std::iter::Iterator fn rev(self) -> Rev< Self > where Self: Sized DoubleEndedIteratorfn step_by(self, step: usize) -> StepBy< Self &…...
编译与运行环境(C语言)
文章目录 前言编译环境编译链接 运行环境 前言 C语言代码的实现,存在两种不同的环境。 第一种是翻译环境,在这个环境中,源代码被转换为可执行的二进制指令。 翻译环境即我们日常使用编译器,将一个 " mission.c " 的文件…...

再谈Android View绘制流程
一,先思考何时开始绘制 笔者在这里提醒读者,Android的View是UI的高级抽象,我们平时使用的XML文件也好,本质是设计模式中的一种策略模式,其View可以理解为一种底层UI显示的Request。各种VIew的排布,来自于开…...

分布式定时任务系列8:XXL-job源码分析之远程调用
传送门 分布式定时任务系列1:XXL-job安装 分布式定时任务系列2:XXL-job使用 分布式定时任务系列3:任务执行引擎设计 分布式定时任务系列4:任务执行引擎设计续 分布式定时任务系列5:XXL-job中blockingQueue的应用 …...

python+Qt5 UOS 摄相头+麦克风测试,摄相头自动解析照片二维条码,麦克风解析音频文件
UI图片: 源代码: # -*- coding: utf-8 -*-# Form implementation generated from reading ui file CameraTestFrm.ui # # Created by: PyQt5 UI code generator 5.15.2 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is…...

MongoDB日期存储与查询、@Query、嵌套字段查询实战总结
缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ profiles.alias: 逆天子, profiles.channel: },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询…...
Windows版本Node.js常见问题及操作解决方式(小白入门必备)
npm i时ERROR:reason: certificate has expired问题 https://blog.csdn.net/m0_73360677/article/details/135774500 # 1.取消ssl验证;npm config set strict-ssl false#这个方法一般可以直接解决问题,如不能请尝试第二种方法# 2.更换npm镜像源&#x…...

09.Elasticsearch应用(九)
Elasticsearch应用(九) 1.搜索结果处理包括什么 排序分页高亮返回指定字段 2.排序 介绍 Elasticsearch支持对搜索结果排序,默认是根据相关度算分来排序 支持排序的字段 keyword数值地理坐标日期类型 排序语法 GET /[索引名称]/_sear…...
ROS2常用命令工具
ROS2常用命令工具 包管理工具ros2 pkg ros2 pkg create ros2 pkg create --build-type ament_python pkg_name rclpy std_msgs sensor_msgs –build-type : C或者C ament_cmake ,Python ament_python pkg_name :创建功能包的名字 rclpy std_msgs sens…...

Linux之快速入门
一、Linux目录结构 从Windows转到Linux最不习惯的是什么: 目录结构 Windows会分盘,想怎么放东西就怎么放东西,好处自由,缺点容易乱 Linux有自己的目录结构,不能随随便便放东西 /:根目录/bin:二进制文件&…...

C语言——操作符详解1
目录 1. 操作符的分类2. 二进制和进制转换2.1 二进制的概念2.2 二进制转十进制2.3 十进制转二进制2.4 二进制转八进制和十六进制2.4.1 二进制转八进制二进制转十六进制 3. 原码、反码和补码4. 移位操作符4.1 左移操作符4.2 右移操作符 5. 位操作符5.1 &5.2 |5.3 ^5.4 ~ 1. …...

C++学习| QT快速入门
QT简单入门 QT Creater创建QT项目选择项目类型——不同项目类型的区别输入项目名字和路径选择合适的构建系统——不同构建系统的却别选择合适的类——QT基本类之间的关系Translation File选择构建套件——MinGW和MSVC的区别 简单案例:加法器设计界面——构建加法器界…...

Android App开发-简单控件(1)——文本显示
本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图、容纳视图的常用布局、响应点击的按钮控件、显示图片的图像视图等。然后结合本章所涉及的知识,完成一个实战项目“简单计算器”的设计与实现。 1.1 文本显示 本节介绍…...

[GYCTF2020]Ezsqli1
打开环境,下面有个提交表单 提交1,2有正确的查询结果,3以后都显示Error Occured When Fetch Result. 题目是sql,应该考察的是sql注入 简单fuzz一下 发现information_schema被过滤了,猜测是盲注了。 测试发现只要有东…...
【npm包】如何发布自己的npm包
随着Node.js的普及,npm(Node Package Manager)已成为JavaScript开发者中不可或缺的一部分。发布自己的npm包,不仅可以将自己的项目分享给更多人,还可以为社区做出贡献。本文将详细介绍如何从零开始发布自己的npm包。 …...

《WebKit技术内幕》学习之十五(2):Web前端的未来
2 嵌入式应用模式 2.1 嵌入式模式 读者可能会奇怪本章重点表达的是Web应用和Web运行平台,为什么会介绍嵌入式模式(Embedded Mode)呢?这是因为很多Web运行平台是基于嵌入式模式的接口开发出来的,所以这里先解释一下什…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

rm视觉学习1-自瞄部分
首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...