如何使用C#使用字典将位于一个字符串列表中的键映射到位于另一个字符串列表中的值?

时间:2019-04-11 20:46:46

标签: c# string list dictionary

我有两个字符串列表; myFruits和myColors。

myFruits的格式如下:

 ["Apple", "Banana", "Guava", "Blueberry"] //key

myColors的格式如下:

["Red", "Yellow", "Green", "Blue"]  //value

我希望能够使用Dictionary依次将myFruits的键映射到myColors的值,并获取  在我的输出中类似以下内容。

Apple:Red
Banana:Yellow
Guava:Green
Blueberry:Blue

我尝试在代码中使用zip,但是我做的事情不正确,因为它无法正确打印。

var dic = myFruits.Zip(myColors, (k, v) => new { k, v }).ToDictionary(x => x.k, x => x.v); 

如何获得所需的输出?这只是一个示例,每次运行时我的列表中都可能有多个值,但始终等于否。不论数量是多少,两个列表上的项目数都是多少。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

这看起来更像是输出问题。请参见下面的代码来制作<fruit>:<color>字符串。

var myFruits = new []{"Apple", "Banana", "Guava", "Blueberry"};
var myColors = new []{"Red", "Yellow", "Green", "Blue"};

var dic = myFruits.Zip(myColors, (k, v) => new { k, v }).ToDictionary(x => x.k, x => x.v);

foreach(var kvp in dic)
{
    Console.WriteLine($"{kvp.Key}:{kvp.Value}");
}

输出:

Apple:Red
Banana:Yellow
Guava:Green
Blueberry:Blue

答案 1 :(得分:0)

您是否有不使用LINQ扩展的问题?

var myFruits = new [] {"Apple", "Banana"};
var myColors = new [] {"Red", "Yellow"};
var mapping = new Dictionary<string, string>();

for(var i = 0; i < myFruits.Count(); i++)
{
  mapping.Add(myFruits[i], myColors[i]);
}