Kullanıyor?. LINQ [duplicate] ile operatör
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
.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ürIEnumerable<T>dizisi boşsa veya varsayılan bir değerli tekil koleksiyonu.
?.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