В настоящее время я работаю над игрой, в которой лучшие 5 рекордов могут отображаться на странице рекордов.

В настоящее время у меня есть словарь типа [string, int], в котором будут храниться имя пользователя и оценка соответственно. Однако у меня возникают проблемы при создании метода, который будет принимать все 5 элементов словаря в формате {"name", 20} и назначить каждый элемент в строку.

Например, элемент словаря [0] содержит значение {sam, 20}. Я хотел бы назначить этот элемент в строку, которая будет читать «Сэм 20».

На данный момент у меня есть метод, который будет возвращать 5 лучших результатов, но моя проблема возникает при преобразовании этих значений в строки из элементов словаря.

Буду признателен за любую помощь, и если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь спрашивать.

Заранее спасибо.

-3
Sam Robinson 24 Апр 2017 в 18:13

2 ответа

Лучший ответ

Вы можете использовать .Select() и интерполяцию строк для построения списка проецируемых строк:

var formattedStrings = dict
                           .OrderByDescending(x => x.Value)
                           .Select(x => $"{x.Key} {x.Value}").ToList();

Поскольку Dictionary<TKey, TValue> реализует IEnumerable<KeyValuePair<TKey, TValue>>, мы можем легко использовать LINQ для упорядочивания и проецирования наших пар ключ / значение перед интерполяцией их в новую строку.

Это также позволяет более гибко запрашивать данные перед отображением списка.

5
David L 24 Апр 2017 в 15:24

Попробуй это.

var answer= string.Join(",", map.Select(s => s.Key + " " +s.Value).ToArray());
0
user7415073 24 Апр 2017 в 15:20
43591796