博客
关于我
LINQ之ElementAt,ElementAtOrDefault
阅读量:318 次
发布时间:2019-03-04

本文共 2218 字,大约阅读时间需要 7 分钟。

ElementAt()和ElementAtOrDefault()是C#集合中常用的方法,用于数组和集合的索引访问操作。ElementAt()方法可以用来快速获取指定索引位置的元素,这与直接使用数组索引器[]的效果相似。ElementAt()适用于所有实现IEnumerable

接口的对象,可以用来获取任意序列中的元素。

ElementAt()的使用

ElementAt()方法的定义如下:

public static TSource ElementAt
(this IEnumerable
source, int index);

该方法接收一个IEnumerable

类型的对象和一个整数索引参数,返回指定索引位置的元素。如果source不支持索引访问(即不实现 IList
接口),ElementAt()方法会抛出 NotSupportedException异常。

ElementAtOrDefault()的使用

ElementAtOrDefault()方法类似于ElementAt(),但其主要区别在于当指定索引超出有效范围或为负数时,它不会抛出异常,而是返回该类型的默认值(null或零值,具体取决于TSource类型)。其定义如下:

public static TSource ElementAtOrDefault
(this IEnumerable
source, int index);

示例代码

以下是ElementAt()和ElementAtOrDefault()的示例代码:

public static class Program{    private static readonly int SELECTED_INDEX = 4;        public static void Main(string[] args)    {        int[] numbers = new int[] {1, 2, 3, 5, 7, 11};        int result = numbers.ElementAt(SELECTED_INDEX);        Console.WriteLine("数据:{0}", numbers.Text());        Console.WriteLine("指定索引:{0}", SELECTED_INDEX);        Console.WriteLine("结果:{0}", result);        Console.ReadKey();    }    public static string Text(this IEnumerable
i_source) { string text = string.Empty; foreach (var value in i_source) { text += string.Format("[{0}], ", value); } return text; }}// ElementAtOrDefault()示例public static class Program{ private static readonly int SELECTED_INDEX = -1; public static void Main(string[] args) { int[] numbers = new int[] {1, 2, 3, 5, 7, 11}; int result = 0; try { result = numbers.ElementAtOrDefault(SELECTED_INDEX); } catch (System.Exception i_exception) { Console.WriteLine("异常:{0}", i_exception); Console.ReadKey(); return; } Console.WriteLine("数据:{0}", numbers.Text()); Console.WriteLine("指定索引:{0}", SELECTED_INDEX); Console.WriteLine("结果:{0}", result); Console.ReadKey(); }}

注意事项

  • ElementAt()和ElementAtOrDefault()都是扩展方法,需要在使用前对集合进行适当的扩展。
  • ElementAtOrDefault()的使用可以避免因索引越界而产生的异常,但需要注意返回值的含义,尤其在没有明确指定默认值的情况下,可能会引发误解。
  • 在使用这些方法时,建议结合其他数据校验机制,以确保程序的健壮性。

转载地址:http://bfnq.baihongyu.com/

你可能感兴趣的文章
PostgreSQL学习总结(10)—— PostgreSQL 数据库体系架构
查看>>
PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案
查看>>
PostgreSQL学习总结(13)—— PostgreSQL 15.8 如何成就数据库性能王者?
查看>>
PostgreSQL学习总结(13)—— PostgreSQL 目录结构与配置文件 postgresql.conf 详解
查看>>
PostgreSQL学习总结(1)—— PostgreSQL 入门简介与安装
查看>>
PostgreSQL学习总结(2)—— PostgreSQL 语法
查看>>
PostgreSQL学习总结(3)—— PostgreSQL 数据类型
查看>>
Qt开发——圆面积计算器
查看>>
PostgreSQL学习总结(5)—— PostgreSQL table 创建与删除
查看>>
PostgreSQL学习总结(6)—— PostgreSQL 模式(SCHEMA)详解
查看>>
PostgreSQL学习总结(7)—— PostgreSQL 语句 INSERT INTO、SELECT、UPDATE、DELETE 等学习
查看>>
PostgreSQL学习总结(8)—— PostgreSQL 基于数据库和基于模式(schema)的多租户分析
查看>>
PostgreSQL学习总结(9)—— PostgreSQL 运算符与表达式
查看>>
PostGreSql学习笔记001---PostgreSQL10.4安装(Windows)_支持PostGreGis_PostJDBC
查看>>
PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
查看>>
PostgreSQL学习笔记:PostgreSQL vs MySQL
查看>>
PostgreSQL实现shape数据转geojson数据(地图工具篇.18)
查看>>
PostgreSQL导入shape数据(地图工具篇.10)
查看>>
PostGreSql工作笔记003---在Navicat中创建数据库时报错rolcatupdate不存在_具体原因看其他博文_这里使用pgAdmin4创建管理postgre
查看>>
PostGreSql工作笔记004---PostGreSql修改密码_windows和linux下修改
查看>>