Я видел этот класс, который выглядит следующим образом:Linq по сравнению с IComparer
/// <summary>
/// Provides an internal structure to sort the query parameter
/// </summary>
protected class QueryParameter
{
public QueryParameter(string name, string value)
{
Name = name;
Value = value;
}
public string Name { get; private set; }
public string Value { get; private set; }
}
/// <summary>
/// Comparer class used to perform the sorting of the query parameters
/// </summary>
protected class QueryParameterComparer : IComparer<QueryParameter>
{
public int Compare(QueryParameter x, QueryParameter y)
{
return x.Name == y.Name
? string.Compare(x.Value, y.Value)
: string.Compare(x.Name, y.Name);
}
}
Тогда позже вызов в коде, который делает вид:
parameters.Sort(new QueryParameterComparer());
который все работает отлично. Я решил, что это была пустая трата времени, создавая класс QueryParameter, который имел только имя, и было бы лучше использовать словарь. Со словарем, а не с помощью Sort (новый QueryParameterComparer()); Я полагал, что я мог бы просто сделать это:.
parameters.ToList().Sort((x, y) => x.Key == y.Key ? string.Compare(x.Value, y.Value) : string.Compare(x.Key, y.Key));
код компилируется нормально, но я не уверен, что он работает ли потому, что список только кажется, что выход в том же порядке, он был поставлен в Так, может кто-нибудь сказать меня, если я делаю это правильно или если я пропущу что-то простое?
Приветствия /r3plica
Просто из любопытства, будет ли SortedDictionary устранять необходимость в сортировке? – r3plica