Выборка из Dictionary по ключу - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Первая тема на форуме, прошу сильно не ругаться, если я что-то упустил или затупил. Держу игровой сервер, на досуге пишу для игры плагины. Игра на Unity, по этому интеграция c# кода крайне удобная. Долго искал, как сделать удобный для написания/редактирования следующий код:
foreach (var pair in dbstat.pinfo.OrderBy(pair => pair.Value.kills).Reverse())
{
//тело с выводом
}
При этом
class StoredData
    {
        public Dictionary<ulong, Pinfo> pinfo = new Dictionary<ulong, Pinfo>();
        public StoredData(){}
    }
class Pinfo
    {
        public int kills;
        public Pinfo(){}
    }
StoredData dbstat;
На практике такой код дает возможность вывести в нужном мне порядке (от большего к меньшему) топ игроков, убивших больше всего. Но для каждого ключа приходится дублировать цикл изменяя всего лишь название ключа в цикле. Уверен, это можно сделать гораздо лаконичнее. Только вот я не нашёл как. Или просто не соображаю. Буду очень рад, если кто-то подскажет более удобное решение.

Решение задачи: «Выборка из Dictionary по ключу»

textual
Листинг программы
var paramEx = Expression.Parameter(typeof(KeyValuePair<ulong, Pinfo>), "x");
var valuePropEx = Expression.PropertyOrField(paramEx, "Value");
var fieldEx = Expression.PropertyOrField(valuePropEx, fieldName);
var selectorEx = Expression.Lambda<Func<KeyValuePair<ulong, Pinfo>, double>>(fieldEx, paramEx);
var selector = selectorEx.Compile();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы