First与FirstOrDefault概述
First
和FirstOrDefault
方法都用以返回集合中第0个索引位置的元素,即第一个元素。此外,它还返回满足指定条件的第一个元素。
First
和FirstOrDefault
分别有两个重载方法。第一个重载方法不接受任何输入参数,而是返回集合中的第一个元素。第二个重载方法接受lambda表达式作为谓词委托来指定条件,并返回满足指定条件的第一个元素。
重载方法结构如下:
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);
First返回集合中的第一个元素
First()
方法用以返回集合的第一个元素,或者使用lambda表达式或Func委托返回第一个满足指定条件的元素。如果给定集合为空或不包含满足条件的元素,则抛出InvalidOperation
异常。
下面的示例程序中,创建了一个包含整数的集合numbers
,然后使用First
方法获取第一个元素:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var result = numbers.First();
Console.WriteLine($"集合numbers中第一个元素值为:{result}");
Console.Read();
}
}
}
运行结果:
集合numbers中第一个元素值为:1
First条件筛选第一个元素
以下是使用First
的带lambda表达式参数的重载对集合numbers
进行筛选后,再获取第一个元素的示例:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var result = numbers.First(x => x > 5);
Console.WriteLine($"集合numbers中大于5的第一个元素值为:{result}");
Console.Read();
}
}
}
运行结果:
集合numbers中大于5的第一个元素值为:6
First超出索引范围
当First
操作的集合没有元素时,会抛出异常,所示如下:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new List<int>() { };
var result = numbers.First();
Console.WriteLine($"集合numbers中第一个元素值为:{result}");
Console.Read();
}
}
}
运行抛出“索引超出范围”的异常如下:
FirstOrDefault返回集合中的第一个元素
FirstOrDefault()
方法的使用与First
方法类似,二者的主要区别在于,当操作的集合没有元素时,FirstOrDefault
不会抛出“索引超出范围”的异常(它将根据集合包含的元素的数据类型返回默认值),而First
则会抛出异常。
下面的示例程序中,创建了一个包含整数的集合numbers
,然后使用FirstOrDefault
方法获取第一个元素:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var result = numbers.FirstOrDefault();
Console.WriteLine($"集合numbers中第一个元素值为:{result}");
Console.Read();
}
}
}
运行结果:
集合numbers中第一个元素值为:1
以下示例演示使用FirstOrDefault
方法获取空集合numbers
的第一个元素:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqTutorial
{
public class MyProgram
{
static void Main(string[] args)
{
var numbers = new List<int> { };
var result = numbers.FirstOrDefault();
Console.WriteLine($"集合numbers的第一个元素值为:{result}");
Console.Read();
}
}
}
运行结果:
集合numbers的第一个元素值为:0
发表评论
登录用户才能发表评论, 请 登 录 或者 注册