0

私は次のことをしようとしています

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

リストが一致するものを見つけた場合、何も削除できないように、ここでインライン null チェックを行うエレガントな方法はありますか?

ありがとう

4

2 に答える 2

2

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")));
于 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 に答える