[英]C# LINQ nullable .Where inline null check
我試圖做以下事情
List<JobPhase> jobPhases = new JobPhaseDao().findAll();
jobPhases.Remove(jobPhases.Where(m => m.Name.Contains("Pre")).First());
有沒有一種優雅的方法在這里進行內聯null檢查,如果列表找到任何匹配我可以刪除任何內容?
謝謝
List.Remove似乎已經支持此行為:傳遞null
作為參數,它應該不刪除任何內容。
要避免在.Where
調用返回不匹配時發生異常,請使用FirstOrDefault()
而不是First()
。
請注意,如果您只希望一個項與Where
謂詞匹配,則應使用SingleOrDefault
而不是First
。
也就是說,你要做的事情並不完全清楚:如果你的名字中有多個包含“Pre”的JobPhases,你有點隨意從列表中刪除其中一個。 您是否嘗試刪除所有匹配的JobPhases? 如果是這樣,您應該探索不同的方法,例如使用RemoveAll()
。 例如:
List<JobPhase> jobPhases = new JobPhaseDao().findAll();
jobPhases.RemoveAll(jobPhases.Where(m => m.Name.Contains("Pre")));
List<JobPhase> jobPhases = new JobPhaseDao().findAll()
.Where(m => !m.Name.Contains("Pre"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.