Если значения гарантированно уникальны, вы можете использовать два SortedLists или SortedDictionaries (кстати, SortedDictionary намного эффективнее, если вы вставляете данные не в порядок, поэтому я буду использовать их для второй коллекции) :
SortedList sortinlist = new SortedList();
SortedDictionary valueOrder = new SortedDictionary<string, string>();
public bool Add(string val1, string val2)
{
Reading reading = new Reading(val1, val2);
sortinlist.Add(val1, val2);
valueOrder.Add(val2, val1);
return true;
}
Если значения не гарантированно быть уникальным, то вы можете рассчитать новую коллекцию всякий раз, когда вам нужны данные для значения (здесь, я полагаю, что sortinlist является SortedList<string, string>
или какой-либо другой тип, который реализует IDictionary<string, string>
):
var valueOrder = sortinlist.OrderBy(kvp => kvp.Value).ToList();
... или поддерживать отдельную коллекцию:
SortedList<string, string> sortinlist = new SortedList<string, string>();
List<KeyValuePair<string, string>> valueOrder = new List<KeyValuePair<string, string>>();
public bool Add(string val1, string val2)
{
Reading reading = new Reading(val1, val2);
sortinlist.Add(val1, val2);
int targetIndex = /* to do: calculate proper index */
valueOrder.Insert(targetIndex, new KeyValuePair<string, string>(val2, val1));
return true;
}
Если вы используете SortedList только потому, что вы надеялись, чтобы иметь возможность сортировать ее по значениям, используйте Dictionary<string, string>
вместо этого.
Если вам это необходимо в этом порядке в отсортированном списке, вам не повезло. Если они понадобятся в этом порядке в какой-либо другой коллекции, ответ зависит от того, какая коллекция может быть, и нужны ли вам как значения, так и ключи или только значения. – phoog
@phoog Можете ли вы объяснить мне, как получить это, заказанное в другой коллекции. Мне нужны оба значения и ключи. – Royal