Звучит так, как будто вам просто нужно сохранить индекс того, где вы должны, а затем некоторую функцию отображения:
int index = 0;
foreach (...)
{
...
string key = MapIndexToKey(index);
dictionary[key] = value;
index++;
}
...
// Keys as per comments
private static readonly List<string> Keys =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopq"
.Select(x => x.ToString())
.ToList();
// This doesn't really need to be a separate method at the moment, but
// it means it's flexible for future expansion.
private static string MapIndexToKey(int index)
{
return Keys[index];
}
РЕДАКТИРОВАТЬ: я обновил метод MapIndexToKey
, чтобы сделать его проще. Непонятно, зачем вам строковый ключ, если вы используете только один символ, хотя ...
Другое редактирование: я думаю, что вы могли бы просто использовать:
string key = ((char) (index + 'A')).ToString();
вместо того, чтобы вообще иметь функцию отображения, учитывая ваши требования, так как символы смежны в порядке Юникода от 'A' ...