0

我正在尝试执行以下操作

List<JobPhase> jobPhases = new JobPhaseDao().findAll();
jobPhases.Remove(jobPhases.Where(m => m.Name.Contains("Pre")).First());

是否有一种优雅的方法可以在这里进行内联空值检查,这样如果列表找到任何匹配项,我什么都不能删除?

谢谢

4

2 回答 2

2

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")));
于 2012-05-24T22:21:27.670 回答
0
List<JobPhase> jobPhases = new JobPhaseDao().findAll()
    .Where(m => !m.Name.Contains("Pre"));
于 2012-05-24T22:17:53.430 回答