(十一)CSharp-LINQ(1)

news2024/11/22 11:06:11

一、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

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

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

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

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

相关文章

【机器学习】信息熵和信息度量

一、说明 信息熵是概率论在信息论的应用&#xff0c;它简洁完整&#xff0c;比统计方法更具有计算优势。在机器学习中经常用到信息熵概念&#xff0c;比如决策树、逻辑回归、EM算法等。本文初略介绍一个皮毛&#xff0c;更多细节等展开继续讨论。 二、关于信息熵的概念 2.1 …

尚硅谷课程vue学习(一)

目录 data两种写法el两种写法由vue管理的函数&#xff0c;一定不要写箭头函数&#xff0c;不然this指向windows实例了MVVM模型defineProperty属性数据代理v-on: v-bind:键盘事件keyup keydowncomputed计算属性监视属性watch监视属性和计算属性区别绑定class和style属性条件渲染…

cocosCreator 3.3~6 安卓热更新官方详细示例

官方的热更新虽给出了示例和源码&#xff0c;但是一些细节的地方和步骤还是没说清楚&#xff0c;导致新手包括我死活是运行不起来&#xff0c;热更新失败&#xff01;很打击人啊。这里有必要给出新手的热更新步骤&#xff0c;前提是你安装了Node.js和python环境&#xff0c;我装…

chatgpt赋能python:更新Python所有库,避免安全漏洞和兼容性问题!

更新 Python 所有库&#xff0c;避免安全漏洞和兼容性问题&#xff01; Python 是当今最受欢迎的编程语言之一&#xff0c;拥有强大而多功能的 API 和丰富的第三方库来支持开发&#xff0c;如 numpy、pandas、tensorflow 等等。但是&#xff0c;这些库不断地更新与改进&#x…

端午作业1

只要文件存在&#xff0c;就会有唯一对应的inode号&#xff0c;且相应的会存在一个struct inode结构体。在应用层通过open&#xff08;&#xff09;打开一个设备文件&#xff0c;会对应产生一个inode号&#xff0c;通过inode号可以找到文件的inode结构体 根据inode结构体中文件…

【Dart语言解密】想要深入了解Dart语法和类型变量吗?

快来读读这篇文章吧&#xff01;本文从Dart信息表示的角度出发&#xff0c;详细讲解了Dart的基础语法和类型变量。通过本文的学习&#xff0c;你将会对Dart语言有更深入的认识和理解&#xff0c;更好地掌握Dart的开发技巧和实践应用。快来一起解密Dart语言吧&#xff01; 1 Da…

数据透视表 - 学习笔记

教程资源&#xff1a;数据透视表_哔哩哔哩_bilibili 目录 一、内容概括 数据操作&#xff1a; 案例&#xff1a; 二、数据操作 &#xff08;一&#xff09;数据清洗 &#xff08;二&#xff09;创建数据透视表 1、数据格式 2、显示方式 3、分组 4、修改数据源 5、…

Web 安全之 HSTS 详解和使用

HSTS&#xff08;HTTP Strict Transport Security&#xff09; 是一种网络安全机制&#xff0c;可用于防范网络攻击&#xff0c;例如中间人攻击和 CSRF&#xff08;Cross-Site Request Forgery&#xff09;等攻击。本文将详细介绍 HSTS 的工作原理、应用场景以及如何在网站中开…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于分类和分割的学术速递(6月 22 日论文合集)

文章目录 一、分类相关(4篇)1.1 Annotating Ambiguous Images: General Annotation Strategy for Image Classification with Real-World Biomedical Validation on Vertebral Fracture Diagnosis1.2 Benchmark data to study the influence of pre-training on explanation pe…

无需专业知识!学会用TensorFlow 2实现天气识别的秘诀

💡《目标识别100例》使用的是Python语言、TensorFlow框架,包含了几十种CNN算法案例💎 附有 🖥 源码 ,可一键运行,避免调试烦恼🏆 课程大作业、毕业论文可直接考借鉴🎈 同时 附带各种算法原理及对应的代码教程,用户可根据自身情况快速排列组合,在不同的数据集上实…

从零开始:入门双目视觉你需要了解的知识

文章目录 前言 双目相机标定去畸变极线校正&#xff08;立体校正&#xff09;立体匹配深度图生成文章已经同步更新在3D视觉工坊啦&#xff0c;原文链接如下&#xff1a; 前言 双目立体视觉是计算机视觉中的一个重要领域&#xff0c;它利用两个相机拍摄同一场景的不同视角的图像…

HDLBits笔记5:Circuits.Combinational Logic.Basic gates

Wire 实现一个电路完成in和out的连线 module top_module (input in, output out);assign out in; endmoduleGND 实现一个电路将out连到GND module top_module (output out);assign out 1b0; endmoduleNOR 实现或非门 module top_module (input in1,input in2,output ou…

Vue-消息订阅与发布(pub/sub)

消息订阅与发布(pub/sub) 消息订阅与发布和全局事件总线一样&#xff0c;也是一种组件间通信的方式 pub/sub全称为publisher(订阅)/subscriber(发布),一般需要数据的人订阅消息&#xff0c;提供数据的人发布消息 这个技术非常简单容易上手&#xff0c;主要有以下两步 1 订阅…

Java集合之ArrayList详解

Java集合之ArrayList 一、ArrayList类的继承关系1. 基类功能说明1.1. Iterator&#xff1a;提供了一种方便、安全、高效的遍历方式。1.2. Collection&#xff1a;为了使ArrayList具有集合的基本特性和操作。1.3. AbstractCollection&#xff1a;提供了一些通用的集合操作。1.4.…

Vue-动画效果

vue动画效果 vue中动画效果是很简单的一个东西&#xff0c;vue帮助我们做了一些动画封装&#xff0c;同时也支持自定义动画&#xff0c;过度&#xff0c;第三方库&#xff0c;这些方式都可以实现&#xff0c;我们一一举例说明 注意&#xff1a;下面的相关截图&#xff0c;由于…

55 KVM工具使用指南-LibcarePlus概述

文章目录 55 KVM工具使用指南-LibcarePlus概述55.1 概述55.2 软硬件要求55.3 注意事项和约束 55 KVM工具使用指南-LibcarePlus概述 55.1 概述 LibcarePlus 是一个用户态进程热补丁框架&#xff0c;可以在不重启进程的情况下对 Linux 系统上运行的目标进程进行热补丁操作。热补…

语音合成 - TTS-VUE 学习

今天给小伙伴测试了一款人工智能文字合成语音的工具&#xff0c;测试中发现应该是某位大神开发的开源工具&#xff0c;经过一下午的测试&#xff0c;发现有可学习之处&#xff0c;有兴趣的小伙伴可以一起来学习下。 一、简单介绍 微软的语音合成助手利用强大的微软AI语音库&am…

牛云企业官网小程序,外卖cps权益变现,uniCloud云开发无需购买服务器和域名,助力每一位创业者。

技术优势 基于 uniapp uniCloud 研发&#xff0c;无需购买服务器和域名&#xff0c;uniCloud 是 DCloud 联合阿里云、腾讯云 serverless 构建。从此不用关心服务器运维、弹性扩容、大并发承载、防DDoS攻击等&#xff0c;轻松应对高并发应用&#xff0c; 上图 小程序页面 体…

一种新颖的智能优化算法-蝠鲼优化算法(MRFO)

目录 一、MRFO数学模型 1.1 链式觅食 1.2 旋风式觅食 1.3 翻筋斗式觅食 二、MRFO伪代码 2019年提出一种新的仿生优化技术称为魔鬼鱼觅食优化算法&#xff0c;旨在提供一种替代优化 解决实际工程问题的方法。该算法的灵感是基于智能算法魔鬼鱼的行为。这项工作模拟了魔鬼…

轻量应用服务器性能如何?CPU带宽流量系统盘测评

轻量应用服务器性能如何&#xff1f;腾讯云轻量应用服务器是一种轻量级搭建小型网站和应用的服务器&#xff0c;相对于其他更高性能配置的服务器CVM&#xff0c;性价比更高。虽然其性能不如高性能云服务器CVM&#xff0c;但对于小型网站和应用来说&#xff0c;能够提供基本的计…