2017-10-12 10 views
0

私はDictionary<string, List<object>>から値を取得する方法について質問がありますが、私はgoogleで見つけたすべての例を試しましたが、 。辞書からの値の取得<string、List <object>>

ので、ここでのコードは次のとおりです。

List<object> listValues = new List<object>(); 
listValues.Add(risk); 
listValues.Add(validFrom); 
listValues.Add(effectiveDate); 

Dictionary<string, List<object>> dic = new Dictionary<string, List<object>>(); 
dic.Add(nameOfInsuredObject, listValues); 

foreach (object value in dic.Values) 
{ 
    System.Console.WriteLine(value); 
} 

私は辞書からキーを取得することができますが、値の取得と、私は今stucked午前.... そして、ここでは、このコードの結果である:

Key => testInsObj 
Values => System.Collections.Generic.List`1[System.Object] 

だから誰でも私を助けることができますか?私はC#の新機能ですので、他の人には簡単な質問かもしれません....

+1

「List 」の代わりにカスタムタイプを作成する必要があるようです。値を取得する際に何が問題になりますか?それは良いと思われる –

+0

あなたの予想される出力は何ですか?つまり、「可読性」とは何を考えていますか?辞書の値はリストです。リストから値を取得する場合は、リストを繰り返して値を出力します。 – itsme86

+1

オブジェクトのリストの 'dic.Values'の各' value' - 'List 'は知っていますか?だから 'List 'の' .ToString() 'はあなたの想像力の中にあるべきですか? –

答えて

1

あなたがこの方法リストの書き込み値を探しているようだ:

実際に
foreach (var value in dic.Values) 
{ 
    value.ForEach(Console.WriteLine); 
} 

辞書の各要素は<string, List<Object>>です。ですから、Valueの部分をコンソールに書く場合は、List<object>の各要素を書くためのforループが必要です。

+0

イェップ、助けてくれて、ありがとう!!!!!! – vladimir

+0

ちょうどあなたの情報のために 'value.ForEach(Console.WriteLine);' value.ForEach(x => Console.WriteLine(x)); 'と読み替えて読むことができる場合は –

+0

も同じです'foreach(値はvar x){Console.WriteLine(x);} } '' .ForEach'メソッドがあなたを混乱させている場合。 –

1

新しいC#ユーザーには、辞書へのアクセス方法が混乱しています。

辞書でforeachを実行すると、KeyValuePair<TKey, TValue>が得られます。このKeyValuePair<TKey, TValue>は、KeyValuePair.KeyKeyValuePair.Valueの2つのプロパティを持ち、KeyValueを辞書に格納しています。

また、あなたのケースでValueは全体List<T>(一部の人々が期待するよう)が、ちょうどいくつかの参照文字列を印刷しないことにConsole.WriteLineをやっ意味し、List<T>です。個々の要素を印刷するには、リストを「ループ」させる必要があります。言うまでもなく、List<T>の要素で何をしたいかに応じて、LINQまたはその他の一般的なC#イディオムを使用できます。

foreach (var value in dic) { 
    Console.WriteLine(value.Key); 
    foreach (var item in value.Value) 
     Console.WriteLine(item); 
} 
関連する問題