我见过这样的类:
/// <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 类是浪费时间,使用 Dictionary 可能会更好。使用字典,而不是使用 Sort(new QueryParameterComparer()); 我想我可以这样做:
parameters.ToList().Sort((x, y) => x.Key == y.Key ? string.Compare(x.Value, y.Value) : string.Compare(x.Key, y.Key));
代码编译得很好,但我不确定它是否正常工作,因为列表似乎只是按照它放入的顺序输出。所以,谁能告诉我我这样做是否正确,或者我是否遗漏了一些简单的东西?
干杯/r3plica