У меня есть два списка строк; myFruits и myColors.

MyFruits имеет следующий формат:

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

MyColors имеет следующий формат:

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

Я хочу иметь возможность сопоставлять ключи 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); 

Как я могу достичь желаемого результата? Это только пример, я могу иметь несколько значений в моем списке при каждом запуске, но всегда будет равным нет. элементов в обоих списках, независимо от того, какое число. Любая помощь будет принята с благодарностью.

1
Code.Breaker 11 Апр 2019 в 23:46

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
2
Dan S 11 Апр 2019 в 21:08

У вас есть проблемы с неиспользованием расширения 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]);
}
0
Corith Malin 11 Апр 2019 в 20:51