.NET 6 ile gelen yeniliklerden biri de LINQ içerisindeki *OrDefault metodlarında default değer atanma özelliği.
.NET 5 ve öncesinde IEnumerable içerisinde bulunan First
, Last
ve Single
metodları aldıkları predicate’e göre herhangi bir eleman bulunamazsa InvalidOperationException fırlatıyorlardı.
Yani;
var list = new List int { 1, 2, 3};
var first = list.First(i => i > 3); // InvalidOperationException
var last = list.Last(i => i > 3); // InvalidOperationException
var single = list.Single(i => i > 3); // InvalidOperationException
.NET 6 ile birlikte bu metodlara ek olarak FirstOrDefault
, LastOrDefault
ve SingleOrDefault
metodlarına default değer atama özelliği geldi. Bunlar aldıkları predicate’e göre eğer bir eleman bulunamazsa defaultValue
ile verdiğiniz değeri geri döndürüyorlar.
first = list.FirstOrDefault(i => i > 3, -1);
last = list.LastOrDefault(i => i > 3, -2);
single = list.SingleOrDefault(i => i > 3, -3);
Console.WriteLine($"{first} {last} {single}");
// -1 -2 -3
Kaynak: Announcing .NET 6 — The Fastest .NET Yet