Элементы будут возвращены в том порядке, в котором они физически хранятся в словаре, что зависит от хеш-кода и порядка добавления элементов.Таким образом, порядок будет казаться случайным, и, поскольку реализации меняются, вы никогда не должны зависеть от того, чтобы порядок оставался прежним.
Вы можете заказать элементы при перечислении их:
foreach (KeyValuePair<string, string> kvp in _Dictionary.OrderBy(k => k.Value)) {
...
}
В framework 2.0сначала вам нужно будет поместить элементы в список, чтобы отсортировать их:
List<KeyValuePair<string, string>> items = new List<KeyValuePair<string, string>>(_Dictionary);
items.Sort(delegate(KeyValuePair<string, string> x, KeyValuePair<string, string> y) { return x.Value.CompareTo(y.Value); });
foreach (KeyValuePair<string,string> kvp in items) {
...
}