2011-10-24 4 views
0

のこのタイプを格納するためのデータstuctureどのようなものです:私は4枚のスプレッドシートを持っていると私はこのような何かを格納したい例えばデータ

Rows 1,2,3 from spread1, 
Rows 1,2 from spread2, 
Rows 3,4 from spread3, 
Row 3 from spread4 

私は辞書<を使用する必要があると思った>が、MSDNのキーを語りますuniqeする必要があります。 これを行う正しい方法は何ですか?

P.S:.NET 3.5を使用していますが、Tupleは使用できません。 ありがとう

+0

範囲も処理しますか? 56行の番号をすべて列挙することなく、行1から56まで –

+0

nop、no range .. – Bohn

答えて

2

カスタムクラスを作成し、これをキーとして使用します。一意のキー(スプレッドシート名と行のリスト)を作成するために必要なすべてのフィールドを含め、EqualsとGetHashCodeを適切にオーバーライドします。

+0

これのコレクションを作成する方法はありますか?新しいクラスではなく...現在のコードは、コード全体にグローバル変数を使用しています。 – Bohn

1

私にリストのリストのように聞こえる、List<List<T>>。おそらくあなたが望むセマンティクスを与えるためにカスタムクラスにラップするのはいいでしょう。そうでなければ、どのリストにあるのかを覚えておくのが難しくなります。そして、各サブリストにいくつかの追加のメタデータが必要です。

+0

このリストのリストの宣言からサンプルコードを私に見せてください。 – Bohn

1

クイックとstraigtforwardソリューション:あなたは柔軟性のいくつかの種類が必要な場合

IDictionary<string, IList<int>> map = new Dictionary<string, IList<int>> 
{ 
    { "spread1", new List<int> { 1, 2, 3 } }, 
    { "spread2", new List<int> { 1, 2 } }, 
    { "spread3", new List<int> { 3, 4 } }, 
    { "spread5", new List<int> { 3 } } 
} 

- カスタムクラスで抽象スプレッドと関連する行を他の人によって提案されたように。

+0

は私が必要とするもののように見えます。しかし、私のためのconfusionはここであなたがハードコーディング1,2,3 ...ですが、実際のコードでは、これはメソッド呼び出しの中にあり、このメソッドが呼び出されるたびにそれらの値の1つを追加しますspread1ディクショナリに値2を追加する次回はspread3ディクショナリに値4を追加しますが、サンプルコードではNEWを使用していますので、以前の値を保持して追加するにはどうすればいいですか? – Bohn