我有這部分代碼:
int[] toRemoveInChildHotelOffersMealsIds = _hotelOfferDetailsRepository.Get()
.Where(x => toRemoveHotelOfferMealsIds.Contains(x.ParentId.Value))
.Select(x => x.ID)
.ToArray();
如果存在,此代碼必須回傳要洗掉的子 ID。
這部分會引發錯誤
可空物件必須有一個值
在單元測驗中。第二件事我不明白為什么我在實際作業中沒有遇到同樣的例外。
那么如何修改我的代碼以避免此例外并僅在具有值的記錄中搜索?
uj5u.com熱心網友回復:
這可能是因為ParentId的值被決議為 null 并且ParentId.Value拋出和例外。您是否為模擬資料的ParentId設定了一個值?
為避免這種情況,請進行空檢查(假設必須忽略沒有 ParentId 值的那些)
int[] toRemoveInChildHotelOffersMealsIds = _hotelOfferDetailsRepository.Get()
.Where(x => x.ParentId.HasValue ? toRemoveHotelOfferMealsIds.Contains(x.ParentId.Value) : false)
.Select(x => x.ID)
.ToArray();
如果需要考慮它們,則使用
int[] toRemoveInChildHotelOffersMealsIds = _hotelOfferDetailsRepository.Get()
.Where(x => !x.ParentId.HasValue || toRemoveHotelOfferMealsIds.Contains(x.ParentId.Value))
.Select(x => x.ID)
.ToArray();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510705.html
