数値をキーとするDictionary型のFirstOrDefaultってnullが返ってこないようです。
大抵、FirstOrDefaultで値がないなど無効である場合は、nullが返って来ることを期待して、判定します。
例えば、以下のコード。
using System; using System.Collections.Generic; using System.Linq; public class Program { class Person { public string Name {get; set;} public int Age { get; set;} } public static void Main() { var dictionary = new Dictionary<int,Person>(); var d = dictionary.FirstOrDefault(); if (d != null) { Console.WriteLine("key = " + d.Key + " value = " + (d.Value == null? "null" : "not null")); } } }
これはコンパイルエラーです。
では値が存在しない場合って、キーは何になっているんだ?
キーは0になるようです。
値はクラスであるならnullとなるようです。
そのため、もし無効な値がなんであるかを調べたい場合は、Valueがnullであるかを判定すれば良さそうです。