我正在尝试执行以下操作
List<JobPhase> jobPhases = new JobPhaseDao().findAll();
jobPhases.Remove(jobPhases.Where(m => m.Name.Contains("Pre")).First());
是否有一种优雅的方法可以在这里进行内联空值检查,这样如果列表找到任何匹配项,我什么都不能删除?
谢谢
List.Remove似乎已经支持这种行为:将 anull
作为参数传递,它应该不会删除任何内容。
.Where
为避免在您的调用没有返回匹配项时出现异常,请使用FirstOrDefault()
代替First()
.
请注意,如果您希望只有一项与Where
谓词匹配,则应使用SingleOrDefault
而不是First
.
也就是说,您要尝试做什么并不完全清楚:如果您有多个名称中包含“Pre”的 JobPhase,则您有点武断地从列表中删除了其中一个。您是否尝试删除所有匹配的 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"));