C# LINQ LastOrDefaultメソッドの使い方と実例解説
LastOrDefault() メソッドは、シーケンスの最後の要素を返します。シーケンスに要素が存在しない場合には、型ごとの既定値(デフォルト値)を返します。この動作により、空のコレクションに対しても例外をスローすることなく安全に処理を行うことができます。
通常の Last() メソッドは、シーケンスが空の場合に InvalidOperationException をスローしますが、LastOrDefault() を使えばエラーを回避できる点が大きな特徴です。
空のリストでのLastOrDefault()の挙動
まず、要素が1つも含まれていない空のリストを用意します。
List<double> val = new List<double> { };
リストが空であるため、次のコードでは最後の要素を取得できません。しかし LastOrDefault() を使用しているため、既定値(数値型の場合は 0)が返され、エラーは発生しません。
val.AsQueryable().LastOrDefault();
サンプルコード
以下に完全なコード例を示します。取得した既定値が 0.0 の場合に別の値へ変更する処理も含まれています。
using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
static void Main() {
List<double> val = new List<double> { };
double d = val.AsQueryable().LastOrDefault();
Console.WriteLine("Default Value = " + d);
if (d == 0.0D) {
d = 0.1D;
}
Console.WriteLine("Default Value changed = " + d);
}
}
実行結果
Default Value = 0 Default Value changed = 0.1
ポイントまとめ
- LastOrDefault():最後の要素を返し、要素がない場合は既定値(double型なら 0)を返す
- 空のシーケンスでも例外が発生しないため、nullチェックや条件分岐と組み合わせて安全に使える
- ラムダ式を渡せば、条件に一致する最後の要素を取得することも可能(例:
val.LastOrDefault(x => x > 5))
-
【初心者向け】C#のLINQ Whereメソッドの使い方を徹底解説!条件に合う要素を抽出する方法
C# LINQのWhereメソッドとは? C#のLINQに用意されているWhereメソッドは、指定した条件(述語:Predicate)に基づいて、コレクションや配列の中から該当する要素だけを抽出(フィルタリング)するためのメソッドです。 データの一覧から特定の条件を満たす項目のみを取り出したい場面は開発現場で非常に多く、WhereメソッドはLINQの中でも特に使用頻度の高い機能といえます。 例えば、以下のように記述すると「70以上の要素」だけを取得できます。 Where((n, index) => n >= 70); このラムダ式では、各要素 n が70以上であるかどうかを判定し、
-
C# LINQ Distinct()メソッドでリストから重複要素を削除する方法
C#のLINQで重複しない要素(一意の値)だけを取得したい場合は、Distinct()メソッドを使用します。このメソッドは、シーケンス内の重複する要素を取り除き、各要素を1度だけ返してくれます。 重複要素を含むリストの準備 まずは、重複した要素を含むリストを用意しましょう。 List<int> points = new List<int> { 5, 10, 5, 20, 30, 30, 40, 50, 60, 70 }; このリストには「5」と「30」がそれぞれ2回含まれています。 Distinct()メソッドで重複を除去する 重複を除いた要素を取得するには、次のように