C#中Linq AsEnumeralbe、DefaultEmpty和Empty的使用

Linq是Language Integrated Query的简称,它是微软在.NET Framework 3.5里面新加入的特性,用以简化查询查询操作。以下主要介绍C#中Linq的AsEnumeralbe、DefaultEmpty和Empty操作符。

1、AsEnumeralbe操作符

AsEnumerable操作符可以将一个类型为IEnumerable<T>的输入序列转换成一个IEnumerable<T>的输出序列,其主要用于将一个实现了IEnumerable<T>接口的对象转换成一个标准的IEnumerable<T>接口对象。在Linq中、不同领域的Linq实现都有自己专属的操作符。

IQueryable<T>通常是Linq to SQL的返回类型,当我们直接在上面调用Where<T>方法时,调用的是Linq to sql的扩展方法,因此有时候我们需要转换为标准的IEnumerable<T>才能调用Linq to OBJECT的扩展方法。

2、DefaultEmpty操作符

DefaultEmpty操作符可以用来为一个空的输入序列生成一个对应的含有默认元素的新序列。引用类型为null,值类型为相应的默认值。有些标准操作符在一个空的序列上调用时会抛出一个异常,而DefaultEmpty恰恰可以解决这个问题。

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{class Program{static void Main(string[] args){List<string> ListInt = new List<string>();ListInt.Add("C");ListInt.Add("Java");ListInt.Add("Python");string str = ListInt.Where(s => s.StartsWith("JavaScript")).DefaultIfEmpty().First();Console.WriteLine("str="+str);     //输出空白//使用string str1 = ListInt.Where(s => s.StartsWith("JavaScript")).First();  如去掉DefaultEmpty就会报异常               Console.ReadKey();}}
}

3、Empty操作符

Empty操作符用于生成一个包含指定类型元素的空序列。

例如,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{class Program{static void Main(string[] args){IEnumerable<int> ints = Enumerable.Empty<int>();Console.WriteLine(ints.Count());    //输出0            Console.ReadKey();}}
}

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

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

相关文章

ctfshow sql171-179

mysql 先打开我们本地的mysql&#xff0c;可以看到这些数据库 information_schema information_schema 库: 是信息数据库&#xff0c;其中保存着关于MySQL服务器所维护的所有其他数据库的信息比如数据库名&#xff0c;数据库表&#xff0c; SCHEMATA表: 提供了当前MySQL实例…

Golang 字符串处理汇总

1. 统计字符串长度&#xff1a;len(str) len(str) 函数用于统计字符串的长度&#xff0c;按字节进行统计&#xff0c;且该函数属于内置函数也不用导包&#xff0c;直接用就行&#xff0c;示例如下&#xff1a; //统计字符串的长度,按字节进行统计: str : "golang你好&qu…

​软考-高级-系统架构设计师教程(清华第2版)【第4章 信息安全技术基础知识(P160~189)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第4章 信息安全技术基础知识&#xff08;P160~189&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

postgresql实现job的六种方法

简介 在postgresql数据库中并没有想oracle那样的job功能&#xff0c;要想实现job调度&#xff0c;就需要借助于第三方。本人更为推荐kettle&#xff0c;pgagent这样的图形化界面&#xff0c;对于开发更为友好 优势劣势Linux 定时任务&#xff08;crontab&#xff09; 简单易用…

tx-前端笔试题记录

目录 目录 1.你最熟悉的前端框架是什么说说你对它的理解。 2.请简单实现一下js对象深度拷贝。 3.CSS 有几种方法实现垂直水平居中?请简要写一下。 4.这段程序执行之后控制台会打印什么内容? 5.下列程序的输出结果是多少?为什么? 6.有ABCDE 五个火车站&#xff0c;单向…

Redhat7设置国内可用yum源

问题&#xff1a; 因为最近安装了redhat7&#xff0c;在使用的时候提示系统未注册订阅&#xff0c;无法使用官方的yum源进行安装软件。为此&#xff0c;我使用centos7国内的yum源替换redhat的官方的yum源实现软件安装。 “This system is not registered with an entitlement …

【PHP常用函数封装】 php 判断两个数组所有的值是否是完全相等

思路&#xff1a;使用array_diff()函数来判断两个数组的值是否完全相等。array_diff()函数用于计算两个或多个数组的差集&#xff0c;如果差集为空&#xff0c;则表示两个数组的值完全相等。 函数isSameValues 判断两个数组所有的值是否是完全相等 function isSameValues($a, …

【2011年数据结构真题】

41题 41题解答&#xff1a; &#xff08;1&#xff09;图 G 的邻接矩阵 A 如下所示&#xff1a; 由题意得&#xff0c;A为上三角矩阵&#xff0c;在上三角矩阵A[6][6]中&#xff0c;第1行至第5行主对角线上方的元素个数分别为5, 4, 3, 2, 1 用 “ 平移” 的思想&#xff0c;…

Outlook无法显示阅读窗格

Outlook无法显示阅读窗格 故障现象 Outlook主界面不显示阅读窗格 故障截图 故障原因 阅读窗格被关闭 解决方案 1、打开Outlook - 视图 – 阅读窗格 2、选择“靠右”或者“底部”&#xff0c;正常显示阅读窗格

同济 MBA 携手和鲸课程共建,以数智人才培养持续赋能企业数字化转型

数智化的浪潮席卷全球&#xff0c;我国产业界应如何做出应变&#xff1f;各企业又该如何深化数字化转型&#xff1f;在任重道远的持续探索中&#xff0c;数智人才培养作为企业实现成功转型的关键要素&#xff0c;已然成为大势所趋。 同济大学综合 MBA 项目高度重视工商管理人才…

什么是代理IP池?如何判断IP池优劣?

代理池充当多个代理服务器的存储库&#xff0c;提供在线安全和匿名层。代理池允许用户抓取数据、访问受限制的内容以及执行其他在线任务&#xff0c;而无需担心被检测或阻止的风险。代理池为各种在线活动&#xff08;例如网页抓取、安全浏览等&#xff09;提高后勤保障。 读完…

lua 时间差功能概略

简介 在进行程序设计过程中&#xff0c;经常需要对某些函数、某些程序片断从开始运行到运行结束所耗费的时间进行一些量化。这种量化实际上就是计算时间差。 获取函数耗时情景如下&#xff1a; function time_used() --开始计时-- do something at here. --结束计时--时间差&…

基于Python+Django的寻人失物失物招领系统

运行环境 开发语言&#xff1a;Python python框架&#xff1a;django 软件版本&#xff1a;python3.7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;PyCharm/vscode 前端框架:vue.js 项目介绍 寻人失物失物招领系统交流平台的主要使用…

浅析网络协议-HTTP协议

1.HTTP简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据&#xff08;HTML 文件, 图…

mybatis-plus全局Update更新策略,和insert插入查询策略

mybatis-plus全局Update更新策略,和insert插入查询策略 从官方文档可知,数据库全局配置策略有三种,分别是查询策略,更新策略,和添加策略 他们的属性: IGNORED 忽略判断,所有字段都进行更新和插入 NOT_NULL只更新和插入非NULL值 NOT_EMPTY 只更新和插入非NULL值且非空字…

【owt】owt-p2p的vs工程构建

owt的p2p代码构建一个静态库 Build started... 1>------ Build started: Project: owtTalkP2P, Configuration: Debug Win32 ------ 1>p2ppeerconnectionchannel.cc 1>g:\webrtc_m98_yjf\src\media\base\codec.h : warning C4819: The file contains a character that…

[RK-Linux] Linux A/B System详解

文章目录 一、配置项二、分区表三、A/B 系统3.1 A/B 数据结构3.2 A/B 启动模式3.2.1 successful-boot3.2.2 reset-retry3.2.3 模式对比3.3 启动流程3.4 验证方法四、系统升级五、分区引导设置5.1 可引导设置5.2 升级分区设置六、SPL 支持 A/B 系统所谓的 A/B System 即把系统固…

MyBatis 反射工具箱:带你领略不一样的反射设计思路

反射是 Java 世界中非常强大、非常灵活的一种机制。在面向对象的 Java 语言中&#xff0c;我们只能按照 public、private 等关键字的规范去访问一个 Java 对象的属性和方法&#xff0c;但反射机制可以让我们在运行时拿到任何 Java 对象的属性或方法。 有人说反射打破了类的封装…

py 脚本发布运行

要发布并运行 Python 脚本&#xff0c;您可以按照以下步骤进行操作&#xff1a; 确保您已经安装了 Python 解释器。您可以在终端或命令提示符中输入 python --version 来检查是否已安装 Python。将您的 Python 脚本保存到一个文件中&#xff0c;例如 my_script.py。将脚本文件…

Redis应用之一自增编号

一、前言 前段时间同事用Redis实现收银台商品排行榜&#xff0c;我们都知道Redis最基础的功能是用来缓存数据&#xff0c;但其实它还有很多特性能解决很多实际问题&#xff0c;接下来几篇文章我们就聊聊Reids一些特性的应用&#xff0c;今天先聊一下借助Reids生成不会重复的订…