1. ホーム
  2. c#

[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?

2022-03-18 08:45:23

質問

どのような場面で .First を使いたいときと .FirstOrDefault をLINQで使用します。

  • を使いたいのはどんな時ですか? .First ? 結果が出なかった場合に例外をキャッチしたい場合だけですか?

    var result = List.Where(x => x == "foo").First();
    
    
  • また、どのような場合に .FirstOrDefault ? 結果が出なければ、常にデフォルトの型が欲しいという場合ですか?

    var result = List.Where(x => x == "foo").FirstOrDefault();
    
    
  • それよりも、テイクはどうなんだ?

    var result = List.Where(x => x == "foo").Take(1);
    
    

解決方法は?

私なら First() シーケンスが少なくとも1つの要素を持つことが分かっている、または期待されている場合。言い換えれば、シーケンスが空であることは例外的なことである場合です。

使用方法 FirstOrDefault() 要素があったかどうかを確認する必要があることが分かっている場合。言い換えれば、シーケンスが空であることが合法である場合です。チェックのために例外処理に頼ってはいけない。例外処理に頼ってはいけません (これはバッドプラクティスであり、パフォーマンスを低下させる可能性があります)。

最後に First()Take(1) は、その First() は要素そのものを返しますが Take(1) は、ちょうど1つの要素を含む要素の並びを返します。