(十一)CSharp-LINQ(1)

一、LINQ

数据库可以通过 SQL 进行访问,但在程序中,数据要被保存在差异很大的类对象或结构中。由于没有通用的查询语言来从数据结构中获取数据。所以可以使用 LINQ 可以很轻松地查询对象集合。

LINQ 高级特性:

  • LINQ 代表语言集成查询。
  • LINQ 是 .NET 框架的扩展,它允许我们以使用 SQL 查询数据库的类似方式来查询数据集合。
  • 使用 LINQ ,你可以从数据库、对象集合以及 XML 文档等中查询数据。
static void Main()
{
int[] numbers = { 2,12,5,15 };//数据源
IEnumerable<int> lowNums = //定义并存储查询
				 form n in numbers
				 where n <10
				 select n;

foreach(var x in lowNums) //执行查询
Console.Write($"{ x },");
}

输出结果:

2,5,

二、LINQ 提供程序

LINQ 还可以查询各种类型的数据源,比如 SQL 数据库、XML 文档等等。
LINQ 提供程序: 对于每一种数据源类型,一定有根据该数据源类型实现 LINQ 查询的代码模块。

请添加图片描述

三、匿名类型

new { FieldProp = InitExpr, FieldProp = InitExpr,... }

示例:

static void Main()
{
var student = new{ Name = "Mary Jones",Age = 19, Major = "History" };
Console.WriteLine($"{ student.Name },Age { student.Age },Major:{ student.Major }");
}

//匿名对象初始化语句:Name = "Mary Jones",Age = 19, Major = "History" 

输出结果:

Mary Jones,Age 19,Major:History

关于匿名类型:

  • 匿名类型只能用于局部变量,不能用于类成员
  • 由于匿名类型没有名字,必须使用 var 关键字作为变量类型。
  • 不能设置匿名类型对象的属性。编译器为匿名类型创建的属性是只读的。

上面的例子中,是对象初始化语句的赋值形式。匿名类型的对象初始化语句还有其他两种形式:简单标识符和成员访问表达式。(这两种形式叫作投影初始化语句)

class Other
{
static public string Name = "Mary Jones";
}

class Program
{
static void Main()
{
string Major = "History";
var student = new { Age = 9, Other.Name ,Major };

Console.WirteLine($"{ stuent.Name },Age { student.Age },Major:{ student.Major }");
}
}

输出结果:

Mary Jones, Age 19, Major : History

转换为赋值形式:

var student = new { Age = 9, Name = Other.Name ,Major = Major };

四、方法语法和查询语法

  • 方法语法使用标准的方法调用。这些方法是一组叫作标准查询运算符的方法。
  • 查询语法看上去和 SQL 语句很相似,使用查询表达式形式书写。
  • 在一个查询中可以组合两种形式。

查询语法是声明式的,也就是说,查询描述的是你想返回的东西,但并没有指明如何执行这个人查询。方法语法是命令式的,它指明了查询方法调用的顺序。C# 编译器会将使用查询语法表示的查询翻译为方法调用的形式。

示例:

    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = { 2, 5, 28, 31, 17, 16, 42 };

            //查询语法
            var numsQuery = from n in numbers
                            where n < 20
                            select n;
            //方法语法
            var numsMethod = numbers.Where(N => N < 20);
            //两种形式的组合
            int numsCount = (from n in numbers
                             where n < 20
                             select n).Count();

            foreach (var x in numsQuery)
                Console.Write($"{ x },");

            Console.WriteLine();

            foreach (var x in numsMethod)
                Console.Write($"{ x },");

            Console.WriteLine();

            Console.WriteLine(numsCount);
                             
            Console.ReadKey();
        }
    }

输出结果:

2,5,17,16,
2,5,17,16,
4

五、查询变量

LINQ 查询可以返回两种类型的结果——可以是一个枚举,它是满足查询参数的项列表;也可以是一个叫作标量的单一值,它是满足查询条件的结果的某种摘要形式。

int[] numbers = { 2,5,28 };
//返回一个枚举器
IEnumerable<int> lowNums = from n in numbers
							where n < 20
							select nl
//返回一个整数
int numsCount = (from n in numbers
						where n <20
						select n).Count();

查询变量:lowNums、numsCount

查询执行实践的差异总结:

  • 如果查询表达式返回枚举,则查询一直到处理枚举时才会执行。
  • 如果枚举被处理多次,查询就会执行多次。
  • 如果在进行遍历之后、查询执行之前数据有改动,则查询会使用新的数据。
  • 如果查询表达式返回标量,查询立即执行,并且把结果保存在查询变量中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

王道计算机网络学习笔记(1)——计算机网络基本知识

前言 文章中的内容来自B站王道考研计算机网络课程&#xff0c;想要完整学习的可以到B站官方看完整版。 一&#xff1a;计算机网络基本知识 1.1.1&#xff1a;认识计算机网络 计算机网络的功能 网络把许多计算机连接在一起&#xff0c;而互联网则将许多网络连接在一起&#x…

vue3+ts+vite+electron打包exe

文章目录 一. 前言二. 准备写好的vue项目打包2.1 修改ts打包代码检测.这个比较烦人. 在package.json中 2.2 配置打包参数2.3 打包vue 三. 打包exe3.1 拉取electron官方demo3.2 下载打包插件3.3 在electron-quick-start项目中找到入口文件 main.js &#xff0c;修改打包的文件路…

【大数据hive】hive 拉链表设计与实现

目录 一、前言 二、拉链表业务背景 2.1 数据同步引发的问题 2.1.1 解决方案1 2.1.2 解决方案2 2.1.3 解决方案3 三、拉链表设计与原理 3.1 功能与应用场景 3.2 实现步骤 3.2.1 Step1 3.2.2 Step2 3.2.3 Step3 3.3 操作演示 3.3.1 创建一张表并加载数据 3.3.2 模…

segment anything环境配置与使用测试

硬件&#xff1a;RTX3070 i9-11900H 内存16G 目录 一、环境配置 二、使用测试--predictor_example.ipynb 1.jupyter notebook准备操作 2.Object masks from prompts with SAM与Environment Set-up 3.Set-up 4.Example image 5.Selecting objects with SAM 6.Specifyin…

在openSUSE-Leap-15.5-DVD-x86_64的gnome下使用远程桌面tigervnc

在openSUSE-Leap-15.5-DVD-x86_64的gnome下使用远程桌面tigervnc 在openSUSE-Leap-15.5-DVD-x86_64的tigervnc-1.12.0软件设计有变动了&#xff0c;变为一开机就启动远程桌面服务&#xff0c;没有vncserver取而代之是Xvnc&#xff0c;也在自己之前写的一篇博文的基础上作了修改…

开源大型语言模型(llm)总结

大型语言模型&#xff08;LLM&#xff09;是人工智能领域中的一个重要研究方向&#xff0c;在ChatGPT之后&#xff0c;它经历了快速的发展。这些发展主要涉及以下几个方面&#xff1a; 模型规模的增长&#xff1a;LLM的规模越来越大&#xff0c;参数数量显著增加。这种扩展使得…

Elasticsearch:DSL Query

Query DSL的分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有的数据&#xff0c;一般测试用&#xff0c;例如&#xff1a;match_all&#xff0c;但有分页限制&#xff0c;一次20…

i5 3470+XSB75M-PK+HD 7750安装黑苹果macOS Big Sur 11.7.7

我本次使用的是 HD 7750 进行安装黑苹果&#xff08;闲鱼80元买的&#xff09;&#xff0c;这款显卡直接就是免驱&#xff0c;最高可以安装的版本是 macOS Monterey &#xff0c;但是建议安装至 macOS Big Sur 以获得较好的体验。 EFI&#xff08;OC引导&#xff09; EFI.zip …

【网络2】MII MDIO

文章目录 1.MII&#xff1a;ISO网络模型中物理层&#xff08;phy&#xff09;和数据链路层&#xff08;mac&#xff09;属于硬件&#xff0c;其余都属于软件kernel2.MDC/MDIO&#xff1a;不仅管phy&#xff0c;只要支持mdio协议都可以管2.1 3.RGMII时序调整&#xff1a;下面波形…

2023-06-19 Untiy进阶 C#知识补充2——C#版本与Unity的关系

文章目录 一、Unity 与 C# 版本二、Unity 的 .Net API 兼容级别 一、Unity 与 C# 版本 Unity 版本C# 版本Unity 2021.2C# 9Unity 2020.3C# 8Unity 2019.4C# 7.3Unity 2017C# 6Unity 5.5C# 4 ​ 更多信息可以在 Unity 官网说明查看&#xff1a;Unity - Manual: C# compiler (u…

EMC学习笔记(七)阻抗控制(一)

阻抗控制&#xff08;一&#xff09; 1.特征阻抗的物理意义1.1 输入阻抗1.2 特征阻抗1.3 偶模阻抗、奇模阻抗、差分阻抗 2.生产工艺对阻抗控制的影响 1.特征阻抗的物理意义 1.1 输入阻抗 在集总电路中&#xff0c;输入阻抗是经常使用的一个术语 &#xff0c;它的物理意义是: …

在 Debian 12 上安装 KubeSphere 实战入门

老 Z&#xff0c;运维架构师&#xff0c;云原生爱好者&#xff0c;目前专注于云原生运维&#xff0c;云原生领域技术栈涉及 Kubernetes、KubeSphere、DevOps、OpenStack、Ansible 等。 前言 知识点 定级&#xff1a;入门级KubeKey 安装部署 KubeSphere 和 KubernetesDebian 操…

arm64架构的linux中断分析(一)

文章目录 1. 中断的概念和作用2. Linux中断处理机制2.1 中断请求2.2 中断处理2.3 中断完成2.4.中断触发和处理步骤详解2.4.1 异常向量表的解读 2.5 硬件中断号和软件中断号 1. 中断的概念和作用 当计算机的CPU需要在执行任务的同时响应外部事件时&#xff0c;中断是一种重要的…

6月份读书学习好文记录

看看CHATGPT在最近几个月的发展趋势 https://blog.csdn.net/csdnnews/article/details/130878125?spm1000.2115.3001.5927 这是属于 AI 开发者的好时代&#xff0c;有什么理由不多去做一些尝试呢。 北大教授陈钟谈 AI 未来&#xff1a;逼近 AGI、融进元宇宙&#xff0c;开源…

kafka消息队列的初步探索

消息队列的作用就是提高运行速度&#xff0c;防止线程堵塞。 kafka的作用 异步 通过在消息队列发送消息的方式&#xff0c;将对应的业务作为监听者&#xff0c;此时我们只需要考虑发送消息的时间即可&#xff0c;大大提高了运行的速度。 解耦 如果使用原来的直接调用对应业务的…

Spring高手之路6——Bean生命周期的扩展点:BeanPostProcessor

文章目录 1. 探索Spring的后置处理器&#xff08;BeanPostProcessor&#xff09;1.1 BeanPostProcessor的设计理念1.2 BeanPostProcessor的文档说明 2. BeanPostProcessor的使用2.1 BeanPostProcessor的基础使用示例2.2 利用BeanPostProcessor修改Bean的初始化结果的返回值2.3 …

Nacos配置中心交互模型是push还是pull?

对于Nacos大家应该都不太陌生&#xff0c;出身阿里名声在外&#xff0c;能做动态服务发现、配置管理&#xff0c;非常好用的一个工具。然而这样的技术用的人越多面试被问的概率也就越大&#xff0c;如果只停留在使用层面&#xff0c;那面试可能要吃大亏。 比如我们今天要讨论的…

leetcode216. 组合总和 III(回溯算法-java)

组合总和 III leetcode216. 组合总和 III题目描述解题思路代码演示 回溯算法专题 leetcode216. 组合总和 III 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/combination-sum-iii 题目描述 找出所有相加之和为 n 的 k 个…

ldsc python程序安装以及测试

教程参考&#xff1a; https://zhuanlan.zhihu.com/p/379628546https://github.com/bulik/ldsc 1. 软件安装 1.1 windows安装教程 首先配置&#xff1a; anaconda&#xff0c;为了需要conda环境git&#xff0c;为了下载github中的ldsc程序 打开windows电脑中的promote&am…

阿里云服务器价格如何?与其他云服务提供商的价格对比如何?

阿里云服务器价格如何&#xff1f;与其他云服务提供商的价格对比如何&#xff1f;   阿里云服务器价格概述   作为全球领先的云计算服务提供商&#xff0c;阿里云在确保服务器性能和安全性的同时&#xff0c;也非常注重产品的价格竞争力。阿里云服务器&#xff08;ECS&…