29

重複の可能性:
.NETディクショナリのキーが重複していますか?

を作成する必要がありますCollection<string,object>。1つは文字列で、もう1つはオブジェクトです。一意の項目がないため、辞書を使用できません。

作成する方法はありますList<T,T>か?単一のforeachループで使用するためだけに、両方の値を保持するオブジェクトを作成したくないためです。

ありがとう

4

6 に答える 6

33

試してみてくださいList<Tuple<string, object>>。次に、リストで通常のlinqサポートを取得して、それぞれで取得できますTuple<string, object>

このTuple<,>クラスは.NET4以降で利用できますが、あまり面倒なことなく、独自のタプルタイプを簡単に模倣できます。

タプルはアイテムの値に基づいて等しいと見なされると思いますが、objectこれを使用すると、参照が等しい可能性が高く、したがって等しくない可能性があります...それが理にかなっている場合!

平等に関する詳細はこちら:

驚くべきタプル(不)平等

アップデート:

ルックアップの目的でアイテムのリストをキーに関連付ける必要がある場合、重複する質問の回答はLookupクラス(この場合はLookup<string, object>)を正しく強調表示します。これにより、意図が。よりも少し明確になりますList<Tuple<string, object>>

于 2012-07-10T08:43:03.820 に答える
11

あなたが使用することができます

List<KeyValuePair<string,object>>

また

Dictionary<string,List<object>>
于 2012-07-10T08:43:30.827 に答える
4

カスタムクラスを作成して使用してみてください

    class KeyValue<Tkey,TValue>
    {
       public Tkey Key {get;set;}
       public TValue Value {get;set;}
    }

のように使用

List<KeyValue<string,string>> list = new List<KeyValue<string,string>>();
于 2012-07-10T08:43:21.620 に答える
4

たぶん、 Tupleクラスを使用してタプルのリストを作成できますか?そのようなもの:

List<Tuple<String, Object>> list = new List<Tuple<String, Object>>();
于 2012-07-10T08:43:56.393 に答える
2

.NET 4を使用している場合は、タプル(http://msdn.microsoft.com/en-us/library/system.tuple.aspx)オブジェクトを使用できます。

var list = new List<Tuple<string, object>>();

以前のバージョンの.NETを使用している場合は、Tupleクラスを自分で実装できます。.NETFramework3.5のTuple(.NET 4)と同等です。

于 2012-07-10T08:46:49.607 に答える
0

「Groupby」を使用して、グループ化された結果を辞書に変換することを検討しましたか?

于 2012-07-10T08:45:31.413 に答える