当我们需要从集合中获取单个元素,且该元素必须满足特定条件时,便可以使用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()
方法实现。