私は次のことをしようとしています
List<JobPhase> jobPhases = new JobPhaseDao().findAll();
jobPhases.Remove(jobPhases.Where(m => m.Name.Contains("Pre")).First());
リストが一致するものを見つけた場合、何も削除できないように、ここでインライン null チェックを行うエレガントな方法はありますか?
ありがとう
List.Removeは、この動作を既にサポートしているようnull
です。パラメーターとして a を渡すと、何も削除されません。
.Where
呼び出しが一致を返さない場合の例外を回避するには、FirstOrDefault()
代わりに を使用しFirst()
ます。
Where
述語に一致するアイテムが 1 つだけであると予想される場合SingleOrDefault
は、First
.
とは言っても、何をしようとしているのかは完全には明らかではありません。名前に「Pre」を含む JobPhases が複数ある場合、それらの 1 つをリストから多少恣意的に削除しています。代わりに、一致するすべての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"));