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相关推荐

  1. LINQ 学习路程 -- 查询操作 GroupBy ToLookUp

    Grouping Operators Description GroupBy GroupBy操作返回根据一些键值进行分组,每组代表IGrouping<TKey,TElement>对象 To ...

  2. LINQ 学习路程 -- 查询语法 LINQ Query Syntax

    1.查询语法 Query Syntax: from <range variable> in <IEnumerable<T> or IQueryable<T> ...

  3. Linq学习——更新数据库操作

    用LINQ to SQL建模Northwind数据库 在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型: 当使用LINQ to SQL设计器设计以上定义的五个类(Produ ...

  4. DQL是什么?DQL数据查询操作演示全流程

    DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录.查询关键字: SELECT 在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当 ...

  5. MySQL查询操作(1)

    MySQL查询操作(1) 本文以部门表.员工表和工资等级表这三张表为例,来学习MySQL 查询操作. 1 初始化三张表 这三张表的SQL文件下载地址为:https://download.csdn.ne ...

  6. LINQ:进阶 - LINQ 标准查询操作概述

    "标准查询运算符"是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> 接口或 I ...

  7. LINQ学习之旅——第二站LTQ之标准数据库操作(增查删改)

    今天要讲解主要内容是关于LINQ TO SQL中的标准数据库操作:插入(Insert).查询(Select).更新(Update)以及删除(Delete),凡是涉及到数据库方面的都会使用这些操作.而这 ...

  8. MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  9. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

最新文章

  1. adb 输入很长的内容 (input text) 在模拟机输入框里面快速输入内容
  2. Makefile常用函数总结
  3. Visual Studio Code支持JUnit
  4. 网络七层协议之物理层
  5. 【转】SVN冲突出现场景
  6. 一张图告诉你,自学编程和科班程序员的差别在哪
  7. 小米9京东预约破百万!明日正式首销:售价2999元起
  8. 腾讯云加码 IDaaS,加速 SaaS 时代进程
  9. VC6.0+番茄助手安装教程
  10. SAP ERP的版本演变基础知识
  11. 【css】巧用border制作三角形
  12. PoisonGAN: Generative Poisoning Attacks Against Federated Learning in Edge Computing Systems 阅读报告
  13. 深入浅出的分析 TreeMap
  14. 雷军一往无前的十年(小米十周年公开演讲)附赠《一往无前》电子书籍
  15. rk3399 hdmi HDCP key烧录
  16. 深度经验总结:快逸报表工具单数据集版本和多数据集版本的主要区别之一
  17. 联想服务器维修单据,联想ThinkServer SR650服务器故障维修
  18. C++读取TXT文档,分行分段解析,通过UDP组播发送
  19. 回顾“90后”——MISRA的25年岁月
  20. 政府信息网站模板源码应该包含哪些模块?

热门文章

  1. AcWing 848. 有向图的拓扑序列(拓扑排序模板)
  2. 李煜东算法进阶指南打卡题解
  3. PyCharm中直接使用Anaconda已安装的库
  4. Transformer的学习
  5. 关于PCI-E接口你要知道这些点
  6. MYSQL的主从和主主复制模式
  7. 使用php第三方包mpdf将网页装换成pdf文件【2】
  8. Confluence 6 连接到 Jira 用户管理的限制
  9. bootstrap16-上下文表格布局
  10. python学习笔记一:python基础知识