📅  最后修改于: 2023-12-03 15:02:41.428000             🧑  作者: Mango
在使用LINQ查询数据时,我们经常需要得到符合特定条件的单个元素。在这种情况下,我们可以使用Single
方法。Single
方法在给定条件下返回满足该条件的单个元素。如果没有元素满足条件,将引发异常。
public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
source
:要查询的集合。predicate
:用于测试每个元素是否满足条件的函数。假设我们有如下的Person
类:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
现在,我们想要获取Id=2
的人的姓名。我们可以使用Single
方法来实现:
List<Person> people = new List<Person>
{
new Person { Id = 1, Name = "John Doe", Age = 30 },
new Person { Id = 2, Name = "Jane Smith", Age = 25 },
new Person { Id = 3, Name = "Bob Johnson", Age = 50 }
};
string personName = people.Single(p => p.Id == 2).Name;
在这个示例中,我们首先创建了一个List<Person>
对象,然后使用Single
方法来查找Id=2
的人,并获取他的姓名。
需要注意的是,如果我们将上述示例中的SingleOrDefault
方法替换为Single
方法,那么当源集合中不含有符合条件的元素时,将引发InvalidOperationException
异常:
string personName = people.Single(p => p.Id == 4).Name;
// System.InvalidOperationException: 'Sequence contains no matching element'
因此,在使用Single
方法时,我们需要确保要查找的元素在源集合中存在。
Single
方法可以用于在集合中查找符合条件的单个元素。如果源集合中不止一个元素符合条件,则Single
方法将引发异常。要使用Single
方法,需要传递一个满足特定条件的函数,并确保要查找的元素在源集合中存在。