一、基本介绍
FirstOrDefault是IEnumerable接口中的一个方法,用于返回序列中的第一个元素,如果序列为空,则返回默认值。使用linq语法时,可以使用条件表达式筛选第一个元素。
首先,我们需要引用System.Linq命名空间,使用linq语法进行筛选,例如:
using System.Linq;
IEnumerable<int> 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<Person> people = new List<Person>()
{
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 => p.Age >= 25);
Console.WriteLine(firstPerson.Name);
上述代码将筛选年龄大于等于25岁的人,并返回第一个匹配的元素,即Bob。
三、返回指定类型的默认值
我们可以使用FirstOrDefault方法返回与指定类型相同的默认值,而不是序列的第一个元素。例如,对于bool类型:
bool[] values = new bool[] { };
bool firstValue = values.FirstOrDefault();
Console.WriteLine(firstValue); // 输出:False
上述代码将返回布尔类型的默认值,即false,因为值数组为空。
四、应用于字典类型
我们可以使用FirstOrDefault方法查找字典中的指定键值对。例如,对于一个字典:
Dictionary<string, int> dict = new Dictionary<string, int>()
{
{ "A", 1 },
{ "B", 2 },
{ "C", 3 }
};
KeyValuePair<string, int> firstItem = dict.FirstOrDefault(item => item.Key == "B");
Console.WriteLine(firstItem.Value); // 输出:2
上述代码将返回键为B的值2,即查找字典中满足条件的第一个键值对。
五、使用默认值返回类型
在某些情况下,返回值可能是null,但我们需要返回类型的默认值。我们可以使用Elvis运算符和默认值合并运算符来解决这个问题。例如:
Person firstPerson = people.FirstOrDefault(p => 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