一、基本介紹
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/zh-tw/n/372369.html