我有一個方法,它有一個自定義物件串列的引數,其中還有我需要訂購的可為空物件,但是當我嘗試訂購并保存回串列時,我得到一個“System.NullReferenceException”。
范圍:
List<GameSortModel> models
GameSortModel(我想對 GameResult 中的一個值進行排序,其中 GameResult 可以為空):
public class GameSortModel
{
public int? Place { get; set; }
public int? ExerciseId { get; set; }
public ClassModel Class { get; set; }
public ExerciseModel? Exercise { get; set; }
public GameResultModel GameResult { get; set; }
}
游戲結果模型:
public class GameResultModel
{
[Key]
public int Id { get; set; }
[Required]
public int ClassId { get; set; }
[Required]
public int ExerciseId { get; set; }
[Required]
public double Result { get; set; }
}
我想按 GameResult.Result 值對我的串列進行排序。我試過這樣做:
models = models.OrderBy(x => x.GameResult.Result).ToList();
我得到了上面寫的錯誤。
我在 GameResult.Result 中的預期輸出:例如 10、15.3、18、null、null、null
我還需要通過降序來排序,所以:例如 18, 15.3, 10, null, null, null
之后,我撰寫了一些代碼來在每個 GameSortModel 中添加 Place 值,并檢查是否有相同的值并給它們相同的位置,然后在網站上顯示結果。
uj5u.com熱心網友回復:
您可以替換null為double.PositiveInfinityor double.NegativeInfinity:
models = models
.OrderBy(x => x.GameResult?.Result ?? double.PositiveInfinity)
.ToList();
在下降的情況下
models = models
.OrderByDescending(x => x.GameResult?.Result ?? double.NegativeInfinity)
.ToList();
這里我們使用空傳播:如果GameResult是,null那么GameResult?.Result將是null我們變成無窮大??。
請拉小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515638.html
標籤:C#。网林克排序无效的
下一篇:第一個非重復字符C#LINQ
