これが私がやろうとしていることの簡単なバージョンです:
var days = new Dictionary<int, string>();
days.Add(1, "Monday");
days.Add(2, "Tuesday");
...
days.Add(7, "Sunday");
var sampleText = "My favorite day of the week is 'xyz'";
var day = days.FirstOrDefault(x => sampleText.Contains(x.Value));
「xyz」はディクショナリに存在しないため、FirstOrDefaultメソッドは有効な値を返しません。この状況をチェックしたいのですが、KeyValuePairが構造体であるため、結果を「null」と比較できないことに気付きました。次のコードは無効です:
if (day == null) {
System.Diagnotics.Debug.Write("Couldn't find day of week");
}
コードをコンパイルしようとすると、Visual Studioから次のエラーがスローされます。
Operator '==' cannot be applied to operands of type 'System.Collections.Generic.KeyValuePair<int,string>' and '<null>'
FirstOrDefaultが有効な値を返したことをどのように確認できますか?
1
あなたはそこにバグがありますが、私はそれがコピーと貼り付けのことだと思います:日はリストではなく、KeyValuePairでaddを使用することはできません。
—
コビ
おっと...あなたは正しいです。私はメモリから入力していたので、間違いを犯しました。指摘してくれてありがとう。
—
desautelsj 2009
おそらく:var days = new Dictionary <int、string>();
—
Mienでさえ