首页 > 系统相关 >windows C#-查询表达式基础(一)

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

时间:2024-11-14 20:45:14浏览次数:3  
标签:windows 元素 查询 C# score 子句 序列 表达式

查询是什么及其作用是什么?

查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织。 查询与它生成的结果不同。

通常情况下,源数据按逻辑方式组织为相同类型的元素的序列。 例如,SQL 数据库表包含行的序列。 在 XML 文件中,存在 XML 元素的“序列”(尽管 XML 元素在树结构按层次结构进行组织)。 内存中集合包含对象的序列。

从应用程序的角度来看,原始源数据的特定类型和结构并不重要。 应用程序始终将源数据视为 IEnumerable<T> 或 IQueryable<T> 集合。 例如,在 LINQ to XML 中,源数据显示为 IEnumerable<XElement>。

对于此源序列,查询可能会执行三种操作之一:

1. 检索元素的子集以生成新序列,而不修改各个元素。 然后,查询可能以各种方式对返回的序列进行排序或分组,如下面的示例所示(假定 scores 是 int[]):

IEnumerable<int> highScoresQuery =
    from score in scores
    where score > 80
    orderby score descending
    select score;

2. 如前面的示例所示检索元素的序列,但是将它们转换为新类型的对象。 例如,查询可能只从数据源中的某些客户记录检索姓氏。 或者可以检索完整记录,然后用于构造其他内存中对象类型甚至是 XML 数据,再生成最终的结果序列。 下面的示例演示从 int 到 string 的投影。 请注意 highScoresQuery 的新类型。

IEnumerable<string> highScoresQuery2 =
    from score in scores
    where score > 80
    orderby score descending
    select $"The score is {score}";

3.检索有关源数据的单独值,如:

与特定条件匹配的元素数。
具有最大或最小值的元素。
与某个条件匹配的第一个元素,或指定元素集中特定值的总和。

例如,下面的查询从 scores 整数数组返回大于 80 的分数的数量:

var highScoreCount = (
    from score in scores
    where score > 80
    select score
).Count();

在前面的示例中,请注意在调用 Enumerable.Count 方法之前,在查询表达式两边使用了括号。 也可以通过使用新变量存储具体结果。

IEnumerable<int> highScoresQuery3 =
    from score in scores
    where score > 80
    select score;

var scoreCount = highScoresQuery3.Count();

在上面的示例中,查询在 Count 调用中执行,因为 Count 必须循环访问结果才能确定 highScoresQuery 返回的元素数。

查询表达式是什么?

查询表达式是以查询语法表示的查询。 查询表达式是一流的语言构造。 它如同任何其他表达式一样,可以在 C# 表达式有效的任何上下文中使用。 查询表达式由一组用类似于 SQL 或 XQuery 的声明性语法所编写的子句组成。 每个子句又包含一个或多个 C# 表达式,而这些表达式可能本身是查询表达式或包含查询表达式。

查询表达式必须以 from 子句开头,且必须以 select 或 group 子句结尾。 在第一个 from 子句与最后一个 select 或 group 子句之间,可以包含以下这些可选子句中的一个或多个:where、orderby、join、let,甚至是其他 from 子句。 还可以使用 into 关键字,使 join 或 group 子句的结果可以充当相同查询表达式中的更多查询子句的源。

开始查询表达式

查询表达式必须以 from 子句开头。 它指定数据源以及范围变量。 范围变量表示遍历源序列时,源序列中的每个连续元素。 范围变量基于数据源中元素的类型进行强类型化。 在下面的示例中,因为 countries 是 Country 对象的数组,所以范围变量也类型化为 Country。 因为范围变量是强类型,所以可以使用点运算符访问该类型的任何可用成员。

IEnumerable<Country> countryAreaQuery =
    from country in countries
    where country.Area > 500000 //sq km
    select country;

范围变量一直处于范围中,直到查询使用分号或 continuation 子句退出。

查询表达式可能会包含多个 from 子句。 在源序列中的每个元素本身是集合或包含集合时,可使用更多 from 子句。 例如,假设具有 Country 对象的集合,其中每个对象都包含名为 Cities 的 City 对象集合。 若要查询每个 Country 中的 City 对象,请使用两个 from 子句,如下所示:

IEnumerable<City> cityQuery =
    from country in countries
    from city in country.Cities
    where city.Population > 10000
    select city;

 

标签:windows,元素,查询,C#,score,子句,序列,表达式
From: https://blog.csdn.net/m0_72813396/article/details/143725327

相关文章

  • 生成本地开发环境中的Https SSL证书和私钥的工具:mkcert
    mkcert 是一个用于生成本地开发环境中的SSL证书和私钥的工具。它可以帮助开发者在不需要购买或配置复杂证书颁发机构(CA)的情况下,快速创建受信任的SSL证书。这对于本地开发和测试Web应用非常有用,因为它可以确保HTTPS连接的安全性。特点简单易用:mkcert 提供了一个简单的命令行......
  • XDF OJ P Answer-C P1006
    (说明:此代码只作为参考,并非绝对的正确代码,但是保证AC)题目:d结尾的单词个数描述有天小盼在学习英语课文的时候,看到了类似这样的句子:Misswhitelook,它有一个长鼻子和一条短尾巴,Sarah它有一双小眼睛和大耳朵。单词之间用空格隔开(可能有多个空格),小盼突发奇想,想知道以d结尾的......
  • ABB AC900F学习笔记331:使用ST做自定义功能块,计算最近60秒的分钟均值和最近60分钟的小
    前面自己学习了在西门子TIA使用SCL编程,施耐德Unity中使用ST编程做分钟均值和小时均值的方法,今晚在家练习了在ABBFreelance中自定义功能块使用ST语言做分钟均值和小时均值。新建项目、插入硬件、仿真器、操作站等不做介绍。新建一个用户功能块池,下面建一个功能块类。功能块类定......
  • 标题:Windows系统启动流程 二
      https://www.cnblogs.com/suv789/p/17499017.htmlBootmgr(BootManager)是WindowsVista及其后续版本(包括Windows7、Windows8、Windows8.1和Windows10)中的引导加载程序,取代了之前的NTLDR。Bootmgr的主要功能是管理计算机的引导过程,负责加载操作系统并将控制权转移给操作......
  • Go - JSON Encoding Nuances
     ......
  • Windows每次开机键盘无法使用,需要重新拔插键盘USB接口的终极解决方案(filco键盘)
    我试了如下方法:1.电源选项中的USB选择性暂停:打开控制面板——电源选项——更改计划设置——更改高级电源设置——USB设置——将USB选择性暂停改为“已禁用”。2.关闭USB的省电策略:右键我的电脑——属性——设备管理器——通用串行总线控制器——右键USBHub——属性——电源管理......
  • C++ 友元跨命名空间使用
    以+运算符重载为例:#include<iostream>#include<string>//前置声明是必须的namespacemydog{classDog;}namespacemyadd{mydog::Dogoperator+(constmydog::Dogdog1,constmydog::Dogdog2);}namespacemydog{classDog{friend......
  • EESA01 Introduction to Environmental
    EESA01IntroductiontoEnvironmentalScienceLaboratoryManualFall2024Lab2:WeatherandClimateDataIntroductioInlectures,wewillsoonbegindiscussingtheEarth’senergybalance,thebasicsofclimate,andotheratmosphericphenomena.Thislabwil......
  • 2024/11/13日 日志 代码优化 以及 JSP 的快速入门、原理、脚本、缺点 和 EL表达式 以
    代码优化--创建SqlSessionFactory代码优化点击查看代码--//2.1获取SqlSessionFactory对象--Stringresource="mybatis-config.xml";--InputStreaminputStream=Resources.getResourceAsStream(resource);--SqlsessionFactorysqlSessionFactory=newSqlSessio......
  • Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码
    全文链接:https://tecdat.cn/?p=38195原文出处:拓端数据部落公众号 股票市场在经济发展中占据重要地位。由于股票的高回报特性,股票市场吸引了越来越多机构和投资者的关注。然而,由于股票市场的复杂波动性,有时会给机构或投资者带来巨大损失。考虑到股票市场的风险,对股价变动的研究......