2017-01-15 41 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

虽然是一个非常有趣的方法。绝对要试试这个:) –