C# Linq的Single()方法 – 返回序列中的唯一元素

  • Post category:C#

当我们需要从集合中获取单个元素,且该元素必须满足特定条件时,便可以使用Single()方法。Single()方法在满足条件的元素只有一个时返回该元素,否则抛出异常。下面,我将为你详细讲解C#Linq的Single()的完整攻略以及提供示例。

语法

public static TSource Single<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

参数:
source:要从中获取元素的集合
predicate:指定筛选条件的谓词函数

返回值:
– 返回集合中满足特定条件的单个元素

异常:
InvalidOperationException:当集合中没有符合条件的元素时,或者集合中存在多个符合条件的元素时抛出此异常。

示例

假设有如下的学生集合:

List<Student> students = new List<Student>
{
    new Student{ Name = "Tom", Age = 20, Gender = "Male" },
    new Student{ Name = "Jack", Age = 18, Gender = "Male" },
    new Student{ Name = "Lily", Age = 19, Gender = "Female" },
    new Student{ Name = "Lucy", Age = 20, Gender = "Female" },
};

示例一

我们需要获取年龄为19的学生对象,可以使用如下代码:

var student = students.Single(s => s.Age == 19);

如果集合中不存在年龄为19的学生,则会抛出InvalidOperationException异常。

示例二

我们需要从集合中获取姓名为Lucy的学生对象,可以使用以下代码:

var student = students.Single(s => s.Name == "Lucy");

如果集合中不存在姓名为Lucy的学生,则会抛出InvalidOperationException异常。

注意:如果集合中存在多个姓名为Lucy的学生,则会抛出InvalidOperationException异常,因为Single()方法要求满足条件的元素只能有一个。如果我们想获取所有姓名为Lucy的学生对象,需要使用Where()方法配合ToList()ToArray()方法实现。