簡體   English   中英

C#LINQ可以為空。內聯空值檢查

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM