プロが教えるわが家の防犯対策術!

C#にて勉強しております。HashTableについて勉強中です。

例えば、商品名、商品番号、単価、数量という商品データがいくつもあったとします。
そのデータを商品番号、単価ごとにまとめたいです。

【商品番号●●&単価△】
商品名A、数量10
商品名B、数量15
商品名C 数量20

とこういう具合です。商品番号ごとにまとめる!という場合はHashTabkeでキーを商品番号
にしてしまえば可能だと思います。そこに単価が加わるとなるとどのような形で実装すべきでしょうか

A 回答 (2件)

単純に考えれば,


Dictionary<int, Dictionary<int, Item[]>>
とするのでしょうか。
# Itemは商品データ。

GroupByしてToDictionaryすればよいのだから,IEnumerable<Item> itemsに対して,
items
 .GroupBy(i => i.Code)
 .ToDictionary(
  g => g.Key,
  g => g.GroupBy(i => i.Price)
   .ToDictionary(g2 => g2.Key, g2 => g2.ToArray()))
でできるかと。


ちなみに,
System.Collections.Hashtable
のようなSystem.Collections直下のコレクションクラスはジェネリックの存在しなかった.NET 1.x時代のものです。
互換性等,重大な理由がない限りSystem.COllections.Generic以下のコレクションクラスを使うべきです。
    • good
    • 0

商品番号と単価をセットでキーとしたいということであれば


商品番号と単価をもつクラスをつくってGetHashCode()を実装じゃないかなぁ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!