Если вы можете определить, каким должен быть порядок, то я бы сделал это следующим образом (я выбрал порядок по ключу):
Dictionary<string, string> inputs = new Dictionary<string, string>(3)
{
{ "A", "First" },
{ "Z", "Third" },
{ "J", "Second" }
};
var outputs = inputs.OrderBy(i=>i.Key).Select(i=>i.Value).ToArray();
// output
// String [] (3 items):
First
Second
Third
Это даст вам массив с индексами, которые вы запрашивали(например, output[0]
).
Если вы действительно хотите вернуть словарные записи, вы можете получить их бесчисленное множество, как это (вы не можете просто вернуть словарь, потому что они неупорядочены):
var outputs = inputs.OrderBy(i=>i.Key).Select(
(entry, index) => new KeyValuePair<int, string>(index, entry.Value));
Добавьте туда .ToArray()
, если вам нужно.
Если вы действительно хотите вернуть словарь, попробуйте следующее:
var outputs = inputs.OrderBy(i=>i.Key)
.Select((entry, i) => new { entry.Value, i })
.ToDictionary(pair=>pair.i, pair=>pair.Value).Dump();
Просто имейте в виду, что словарине по порядку, поэтому, если вы перечислите его, вы должны снова добавить .OrderBy
.