リストからいくつかの値を取得しようとしています。ただし、キーが存在しない場合は、0例外をスローする代わりにデフォルト値を返すことを保証したいと思います。
var businessDays = days.Where(x => x.Year == year).ToDictionary(x => x.Month, x => x.Qty);
var vmBusinessDays = new BusinessDay()
{
Jan = businessDays[1],
Feb = businessDays[2],
Mar = businessDays[3],
Apr = businessDays[4],
May = businessDays[5]
[..]
};
コードをあまり汚染しないで、Nullable<T>.GetValueOrDefaultまたはそのようなものを使用するにはどうすればよいでしょうか?null-coalescing
var vmBusinessDays = new BusinessDay()
{
Jan = businessDays[1].GetValueOrDefault(),
Feb = businessDays[1]?? 0
}
は承知してDictionary<TKey, TValue>.TryGetValueいますが、各プロパティに出力値を設定するためのコード行が重複します。