LINQ 学习路程 -- 查询操作 ElementAt, ElementAtOrDefault
Element Operators (Methods) | Description |
---|---|
ElementAt | 返回指定索引的元素,如果索引超过集合长度,则抛出异常 |
ElementAtOrDefault | 返回指定索引的元素,如果索引超过集合长度,则返回元素的默认值,不抛出异常 |
First | 返回集合的第一个元素,可以根据指定条件返回 |
FirstOrDefault | 返回集合的第一个元素,可以根据指定条件返回,如果集合不存在元素,则返回元素的默认值 |
Last | 返回集合中的最后一个元素,可以根据条件返回 |
LastOrDefault | 返回集合中的最后一个元素,可以根据条件返回,如果集合不存在,则返回元素的默认值 |
Single | 返回集合中的一个元素,可以根据条件返回,如果集合不在存元素或有多个元素,则抛出异常 |
SingleOrDefault | 返回集合中的一个元素,可以根据条件返回,如果集合不在存元素,则返回元素默认值,如果存在多个元素,则抛出异常 |
public static TSource First<TSource>(this IEnumerable<TSource> source);public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source);public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static TSource Last<TSource>(this IEnumerable<TSource> source);public static TSource Last<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source);public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static TSource Single<TSource>(this IEnumerable<TSource> source);public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source);public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
SequenceEqual
判断集合相等‘
如果集合的元素是简单类型,则判断两个集合的元素个数,元素值,出现的位置是否一样
如果集合的元素是复杂类型,则判断两个集合的元素引用是否相同、元素个数,元素值,出现的位置是否一样
如果要判断集合元素为复杂类型的值是否相等,则要实现IQualityComparer<T>接口
class StudentComparer : IEqualityComparer<Student> {public bool Equals(Student x, Student y){if (x.StudentID == y.StudentID && x.StudentName.ToLower() == y.StudentName.ToLower())return true;return false;}public int GetHashCode(Student obj){return obj.GetHashCode();} }
Concat
连接两个元素类型相同的集合,并返回新的集合
IList<string> collection1 = new List<string>() { "One", "Two", "Three" }; IList<string> collection2 = new List<string>() { "Five", "Six"};var collection3 = collection1.Concat(collection2);foreach (string str in collection3)Console.WriteLine(str);
DefaultIfEmpty
如果集合元素个数为0,调用DefaultIfEmpty后,则返回一个新的集合,且包含一个元素(元素值为默认值)
另一个方法重载接收一个参数,代替默认值返回
IList<string> emptyList = new List<string>();var newList1 = emptyList.DefaultIfEmpty(); var newList2 = emptyList.DefaultIfEmpty("None"); Console.WriteLine("Count: {0}" , newList1.Count()); Console.WriteLine("Value: {0}" , newList1.ElementAt(0));Console.WriteLine("Count: {0}" , newList2.Count()); Console.WriteLine("Value: {0}" , newList2.ElementAt(0));
Method | Description |
---|---|
Empty | 返回空集合 |
Range | Generates collection of IEnumerable<T> type with specified number of elements with sequential values, starting from first element. |
Repeat | Generates a collection of IEnumerable<T> type with specified number of elements and each element contains same specified value. |
Empty不是IEnumerable的扩展方法,而是Enumerable的静态方法
var emptyCollection1 = Enumerable.Empty<string>(); var emptyCollection2 = Enumerable.Empty<Student>();Console.WriteLine("Count: {0} ", emptyCollection1.Count()); Console.WriteLine("Type: {0} ", emptyCollection1.GetType().Name );Console.WriteLine("Count: {0} ",emptyCollection2.Count()); Console.WriteLine("Type: {0} ", emptyCollection2.GetType().Name );
Range
方法返回指定元素个数的集合,集合以给定的值开始 (元素类型为int)
var intCollection = Enumerable.Range(10, 10); Console.WriteLine("Total Count: {0} ", intCollection.Count());for(int i = 0; i < intCollection.Count(); i++)Console.WriteLine("Value at index {0} : {1}", i, intCollection.ElementAt(i));
Repeat
返回指定元素个数的集合,且元素的值一样
var intCollection = Enumerable.Repeat<int>(10, 10); Console.WriteLine("Total Count: {0} ", intCollection.Count());for(int i = 0; i < intCollection.Count(); i++)Console.WriteLine("Value at index {0} : {1}", i, intCollection.ElementAt(i));
转载于:https://www.cnblogs.com/lanpingwang/p/6607355.html
LINQ 学习路程 -- 查询操作 ElementAt, ElementAtOrDefault相关推荐
- LINQ 学习路程 -- 查询操作 GroupBy ToLookUp
Grouping Operators Description GroupBy GroupBy操作返回根据一些键值进行分组,每组代表IGrouping<TKey,TElement>对象 To ...
- LINQ 学习路程 -- 查询语法 LINQ Query Syntax
1.查询语法 Query Syntax: from <range variable> in <IEnumerable<T> or IQueryable<T> ...
- Linq学习——更新数据库操作
用LINQ to SQL建模Northwind数据库 在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型: 当使用LINQ to SQL设计器设计以上定义的五个类(Produ ...
- DQL是什么?DQL数据查询操作演示全流程
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录.查询关键字: SELECT 在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当 ...
- MySQL查询操作(1)
MySQL查询操作(1) 本文以部门表.员工表和工资等级表这三张表为例,来学习MySQL 查询操作. 1 初始化三张表 这三张表的SQL文件下载地址为:https://download.csdn.ne ...
- LINQ:进阶 - LINQ 标准查询操作概述
"标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 I ...
- LINQ学习之旅——第二站LTQ之标准数据库操作(增查删改)
今天要讲解主要内容是关于LINQ TO SQL中的标准数据库操作:插入(Insert).查询(Select).更新(Update)以及删除(Delete),凡是涉及到数据库方面的都会使用这些操作.而这 ...
- MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
最新文章
- adb 输入很长的内容 (input text) 在模拟机输入框里面快速输入内容
- Makefile常用函数总结
- Visual Studio Code支持JUnit
- 网络七层协议之物理层
- 【转】SVN冲突出现场景
- 一张图告诉你,自学编程和科班程序员的差别在哪
- 小米9京东预约破百万!明日正式首销:售价2999元起
- 腾讯云加码 IDaaS,加速 SaaS 时代进程
- VC6.0+番茄助手安装教程
- SAP ERP的版本演变基础知识
- 【css】巧用border制作三角形
- PoisonGAN: Generative Poisoning Attacks Against Federated Learning in Edge Computing Systems 阅读报告
- 深入浅出的分析 TreeMap
- 雷军一往无前的十年(小米十周年公开演讲)附赠《一往无前》电子书籍
- rk3399 hdmi HDCP key烧录
- 深度经验总结:快逸报表工具单数据集版本和多数据集版本的主要区别之一
- 联想服务器维修单据,联想ThinkServer SR650服务器故障维修
- C++读取TXT文档,分行分段解析,通过UDP组播发送
- 回顾“90后”——MISRA的25年岁月
- 政府信息网站模板源码应该包含哪些模块?