キーと 1 つ以上の値を持つデータを表す必要があります。namevaluecollection またはルックアップがあるようです。
2つの主な違いは、ルックアップが不変であることです.2つに注意すべき重要な違いは他にありますか?
キーと 1 つ以上の値を持つデータを表す必要があります。namevaluecollection またはルックアップがあるようです。
2つの主な違いは、ルックアップが不変であることです.2つに注意すべき重要な違いは他にありますか?
NameValueCollection
とILookup
、いくつかの点で異なります。
まず、NameValueCollection は文字列 -> 文字列からのマップです。各キーは値を 1 つだけ持つことができ、キーと値の両方が文字列でなければなりません。これはあなたの要件を満たしているようには思えません:
キーと 1 つ以上の値を持つデータを表現する必要がある
2 つ目ILookup
は、基本的に汎用的なマルチマップです。キーを 1 つ以上の値のセットにマップします。キーと値の両方を任意の型にすることができます。ILookup<,>
あなたが言及したように、不変ですが、直接構築することもできません。インスタンスを取得する唯一の方法は、Enumerable.ToLookup()
メソッドを使用することです。これには、すべてのデータを一度に利用できる必要があります。時間をかけてマルチマップを構築することはできません。
本当に必要なものが変更可能なマルチマップである場合はEditableLookup<,>
、MiscUtilDictionary<TKey,List<TValue>>
の 、独自のタイプのラップのいずれかを確認する必要があります。