2017-01-15 39 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本地窗口是不可能的? – 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'內置了對這種語法的支持,你也可以使用內插字符串, Console.WriteLine($「{tuple.Item1} - {tuple.Item2} - {tuple.Item3}」);'(注意'$'字符) –

+0

明白了,非常感謝。現在是訪問列表中的單個項目。 –

0

也許我誤解,但如果你使用:

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

您將打印各List<>項目,由CR LF(換行)分隔。

由於Tuple<,,>覆蓋ToString(),這應該是相當可讀的。

+0

fyi,['Environment.NewLine'](https://msdn.microsoft.com/en-us/ library/system.environment.newline)反映了取決於你的環境的換行符:) –

+0

這也可以用於打印,但我需要訪問tuple的單個元素,所以我要用foreach(var tuple在列表中)回答。謝謝你:) –

+0

雖然是一個非常有趣的方法。絕對要試試這個:) –