我有這個 var activityGroup = context.Activity.Where(c => c.ActivityId == activityId).Select(c => c.ActivityGroupId);
如果沒有ActivityGroupId“出于某種原因”(仍然不知道為什么),該查詢將回傳一個串列,其中第一項為空......我如何檢查該串列是否不存在null或是否有任何元素?
供參考
- 我知道存在,
.Any()但由于第一項為空,所以.Any()會回傳true。
- 如果我這樣做可以嗎:
if (activityGroup.Contains(null)) { // do something here }
uj5u.com熱心網友回復:
當問題要求訪問串列中的第一項時,linq 中有一個函式回傳串列中的第一項。
嘗試以下操作:
if (activityGroup.First() == null)
如果第一項為空,還有另一個函式FirstOrDefault()允許處理默認值的情況。
此官方 Microsoft檔案中的更多內容
但是,由于 ActivityGroupId 可能在第一個以外的專案中為空,因此您需要在 where 子句中檢查其可空性,如下所示:
.Where(c => c.ActivityId == activityId && c.ActivityGroupId != null)
uj5u.com熱心網友回復:
var activityGroup = context.Activity
.Where(c => && c.ActivityGroupId != null && c.ActivityId == activityId)
.Select(c => c.ActivityGroupId);
var hasActivityGroup = activityGroup.Any();
這是正確的語法,當 ActivityGroupId 為空時,其他建議的解決方案仍然會拋出空指標例外。
uj5u.com熱心網友回復:
由于其中一個標簽是“物體框架”,我建議在從資料庫中檢索資料時進行過濾。如果您只對非空項感興趣,則可以擴展 -Where子句:
var activityGroup = context.Activity
.Where(c => c.ActivityId == activityId && c.ActivityGroupId != null)
.Select(c => c.ActivityGroupId);
var hasActivityGroup = activityGroup.Any();
上述方法直接在資料庫中過濾,以便只傳輸包含ActivityGroupId.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510657.html
標籤:C#列表实体框架林克
