Выборка из 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();