Kullanıyor?. LINQ [duplicate] ile operatör

Sep 27 2020

Bu belgelere göre kullanabilirim A?.B?.Do(C);.

Bir var Listve bunu filtrelemek ve ardından Minyöntemi kullanmak istiyorum :

var Min = MyList.Where(o => o.Propery1 == 1)?.Min(o => o.Price)

Sorun MyList.Where(o => o.Propery1 == 1)herhangi bir sonuç vermiyor ve bu hatayı aldım:

Sıra öğe içermiyor

Ve StackTrace:

System.Linq.Enumerable.Min (IEnumerable1 kaynağı) at System.Linq.Enumerable.Min [TSource] (IEnumerable1 kaynağı, Func`2 seçici) ...

Öyleyse sorun nedir? MinYöntemi neden boş liste ile kullanamıyorum ?

Yanıtlar

3 SalahAkbari Sep 27 2020 at 16:04

.DefaultIfEmpty()Yöntemi çağırmadan önce yöntemi kullanmanızı öneririm min:

MyList.Where(o => o.Propery1 == 1).DefaultIfEmpty().Min(o => o?.Price)

DefaultIfEmptyBir unsurlarını döndürür IEnumerable<T>dizisi boşsa veya varsayılan bir değerli tekil koleksiyonu.

1 martikyan Sep 27 2020 at 16:07

?.Sol taraftaki ifade null olduğunda aka boş koşullu operatör çalışır. Bu durumda, null değil, boş bir numaralandırılabiliriniz var, bu nedenle, .Max (), girdi boş olduğunda ne yapacağı hakkında hiçbir fikre sahip değildir.

Boş bir odanız var: en yaşlı kişinin yaşını geri verin