📜  LINQ Single()方法(1)

📅  最后修改于: 2023-12-03 15:02:41.428000             🧑  作者: Mango

LINQ Single()方法

在使用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方法,需要传递一个满足特定条件的函数,并确保要查找的元素在源集合中存在。