FirstOrDefault() で条件に合う値が取得できなかったことをチェックする場合、KeyValuePair では少し書き方を変える必要があります。== null と書きたくなりますが、default で規定値かどうかのチェックを行います。 C# の規定値(default)によるチェック 注意点としては、Equals は内部的に型変換をしてしまうため、default の型を合わせておかないと、思った通りの結果にならないことがあります。 var kvp = new List<KeyValuePair<int, string>>() { new KeyValuePair<int, string>(1, "hoge"), }; var result = kvp.FirstOrDefault(x => x.Value == "ほげ"); if (result.Equals(default(KeyValuePair<int, string>))) { Console.WriteLine("null"); } // この書き方だと、チェックをすり抜けてしまうので注意。 if (result.Equals(default(KeyValuePair<string, string>))) { Console.WriteLine("null"); }