2017-01-15 11 views
0

ListにはTupleが含まれています。パラメータとして辞書を取り、リストを埋めます。C#でリストにネストされたタプルを印刷するにはどうすればよいですか?

数値をテキスト値に割り当てる必要があります。

クリアランスのため。

私は属性セクションを持っています。晴れ、雨、霧など

属性::それのための温度

テキスト値:

属性:曇りのための曇り

テキスト値マイルド、ホット、冷たい、

Listがあり属性としてのデータ、テキストとしての値、数値としての値。

私はデータセクションを持っています。 「日当たりの良い、寒い」、「日当たりの良い、熱い」などの値を持ちます。

私の目的は、数字を割り当てて「1,2」、「1,3」などのようなデータを表現することです。 これを実現するために、私は関数を書きました。

public List<Tuple<string, string, int>> SetNumAttrb(Dictionary<string, string[]> dic) 
    { 
     List<Tuple<string, string, int>> attNumNom = new List<Tuple<string, string, int>>(); 
     int ctrl = 1; 
     foreach (KeyValuePair<string, string[]> kvp in dic) 
     { 
      for (int i = 0; i < kvp.Value.Length; i++) 
      { 
       attNumNom.Add(Tuple.Create<string, string, int>(kvp.Key, dic[kvp.Key][i], ctrl)); 
       ctrl++; 
      } 
     } 
     return attNumNom; 
    } 

正しく動作しているかどうかを確認するためにこれを印刷する必要があります。その内容にアクセスする必要があります。どうやってやるの?

+0

私は、Visual Studio Localsウィンドウが問題になっていないと思いますか? – Abion47

+1

'Tuple.Create'の素晴らしい点は、汎用引数を除外できることです。あなたの場合は、' Tuple.Create(kvp.Key、dic [kvp.Key] [i]、ctrl) 'Add'メソッドへの引数として渡します。 –

+0

@JeppeStigNielsenああ、私はそれを知らなかった。ありがとうございました:) –

答えて

1

これはかなり簡単です。リストを繰り返して、タプルの内容を出力してください。

List<Tuple<string, string, int>> list = SetNumAttrb(dict); 

foreach (var tuple in list) 
{ 
    Console.WriteLine("{0} - {1} - {2}", tuple.Item1, tuple.Item2, tuple.Item3.ToString()); 
} 
+0

ありがとう、これは私が必要としていたものです。私の脳はとても麻痺していますが、私はこれを考えることができないと思うのです。( –

+0

'Console.WriteLine'にはこの構文が組み込まれていますが、補間された文字列を' –

+0

大変ありがとうございます。私のために重要なことは正しくありました。 " –

0

たぶん私は誤解していますが、使用している場合:

Console.WriteLine(string.Join("\r\n", attNumNom)); 

あなたはCR LF(改行)で区切られた各List<>項目を印刷します。

Tuple<,,>は、ToString()に上書きされているため、かなり読みやすいはずです。

+0

fyi、['Environment.NewLine'](https://msdn.microsoft.com/en-us/) library/system.environment.newline)はあなたの環境に応じて改行を反映します:) –

+0

これは印刷にはうまくいくかもしれませんが、私はタプルの個々の要素にアクセスする必要がありますので、foreach(リスト内のvar tuple)とにかくありがとう:) –

+0

非常に興味深い方法です。間違いなくこれを試してみる:) –

関連する問題