0

次のようなクラスを見てきました。

    /// <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());

すべて正常に動作します。name の値しか持たない 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

4

3 に答える 3