从多个方面详述FirstOrDefault用法

一、基本介绍

FirstOrDefault是IEnumerable接口中的一个方法,用于返回序列中的第一个元素,如果序列为空,则返回默认值。使用linq语法时,可以使用条件表达式筛选第一个元素。

首先,我们需要引用System.Linq命名空间,使用linq语法进行筛选,例如:

using System.Linq;
IEnumerable&ltint&gt numbers = Enumerable.Range(1, 5);
int firstNumber = numbers.FirstOrDefault();

上述代码将返回集合中的第一个元素,即数字1。如果集合为空,则返回类型的默认值,int类型默认值为0。

二、筛选指定元素

我们可以使用条件表达式从序列中筛选指定的元素。例如,对于一个Person的类:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
List&ltPerson&gt people = new List&ltPerson&gt()
{
    new Person() { Name = "Amy", Age = 24 },
    new Person() { Name = "Bob", Age = 29 },
    new Person() { Name = "Chris", Age = 22 },
    new Person() { Name = "David", Age = 27 }
};
Person firstPerson = people.FirstOrDefault(p =&gt p.Age &gt= 25);
Console.WriteLine(firstPerson.Name);

上述代码将筛选年龄大于等于25岁的人,并返回第一个匹配的元素,即Bob。

三、返回指定类型的默认值

我们可以使用FirstOrDefault方法返回与指定类型相同的默认值,而不是序列的第一个元素。例如,对于bool类型:

bool[] values = new bool[] { };
bool firstValue = values.FirstOrDefault();
Console.WriteLine(firstValue); // 输出:False

上述代码将返回布尔类型的默认值,即false,因为值数组为空。

四、应用于字典类型

我们可以使用FirstOrDefault方法查找字典中的指定键值对。例如,对于一个字典:

Dictionary&ltstring, int&gt dict = new Dictionary&ltstring, int&gt()
{
    { "A", 1 },
    { "B", 2 },
    { "C", 3 }
};
KeyValuePair&ltstring, int&gt firstItem = dict.FirstOrDefault(item =&gt item.Key == "B");
Console.WriteLine(firstItem.Value); // 输出:2

上述代码将返回键为B的值2,即查找字典中满足条件的第一个键值对。

五、使用默认值返回类型

在某些情况下,返回值可能是null,但我们需要返回类型的默认值。我们可以使用Elvis运算符和默认值合并运算符来解决这个问题。例如:

Person firstPerson = people.FirstOrDefault(p =&gt p.Name == "Eva");
string firstName = firstPerson?.Name ?? "No Person Found";
Console.WriteLine(firstName);

上述代码将返回第一个名字为Eva的人,如果不存在,则返回”No Person Found”。

原创文章,作者:UKANX,如若转载,请注明出处:https://www.506064.com/n/372369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
UKANX的头像UKANX
上一篇 2025-04-24 06:40
下一篇 2025-04-24 06:40

相关推荐

发表回复

登录后才能评论