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");
}