休日の計算を行うには、1 年間および複数の国とその州の休日をリポジトリからロードする必要があります。
日付が休日かどうかを確認する必要があるロジックで良好なパフォーマンスを得るために、.ToLookup 拡張機能を使用してリストをルックアップに変換し、その値として辞書を使用しようとしています。
このディクショナリは、State をキーとして、その状態の HashSet を値として持ちます。
Lookup、Dictionary、HashSet を使用して作成しようとしているので、Country と State を使用してフィルター処理することで、休日の情報にすばやくアクセスできます。
以下はコードです:
var CountryStateHolidayLookup = holidays.ToLookup(x => x.Country,
x => (
new Dictionary<int, HashSet<Holiday>>()
{ { x.State,
new HashSet<Holiday>()
{ new Holiday(
x.HolidayDate.Date, x.IsWeekend)
}
} }
)
);
上記のコードの出力では、country code を使用してルックアップを取得します。このルックアップの値は、各休日を新しいディクショナリとして持つディクショナリの列挙型になります。
一方、すべてのアイテムを1つのHashSetとして持つ辞書を期待していました
ここで何か間違ったことをしていることはわかっています。どのような変更を行う必要がありますか?