La lista de clasificación lleva al error de conversión ‘nula’

No puedo entender por qué obtengo un error de vacío con este bash de ordenar mi lista. ParameterList es un diccionario originalmente, luego lo convierto a una lista genérica y luego trato de ordenar. Quiero volver a la lista como una lista genérica como puedes ver:

List<KeyValuePair> sortedList = parameterList.ToList().Sort((left, right) => left.Key.Equals(right.Key, StringComparison.Ordinal) ? string.Compare(left.Value, right.Value, StringComparison.Ordinal) : string.Compare(left.Key, right.Key, StringComparison.Ordinal)); 

Error: ” Cannot convert source type 'void' to target type List<System.Collections.Generic.KeyValuePair>

¿De qué se trata este vacío?

ACTUALIZADO

La clasificación de la lista aún no se ordenará, usando ninguna de las sugerencias o mi código de clasificación original que obtuve de http://oauth.googlecode.com/svn/code/csharp/OAuthBase.cs

Así es como lo tengo:

  Dictionary authParamsNonNormalized = new Dictionary { {Constants.OAuthConsumerKey, consumerKey}, {Constants.OAuthSignatureMethodKey, methodType}, {Constants.OAuthTimestampKey, timeStamp()}, {Constants.OAuthTokenKey, accessToken}, {Constants.OAuthNonceKey, nonce}, {Constants.OAuthVersionKey, Constants.OAuthVersion} }; 

Luego lo convierto a una lista genérica con la Lista de Toque () t, ya que era un diccionario entrante a mi método que contiene este código:

 List<KeyValuePair> sortedParamList = parameterList.ToList(); sortedParamList.OrderBy(p => p.Key, StringComparer.Ordinal) .ThenBy(p => p.Value, StringComparer.Ordinal).ToList(); 

cuando verifico ordenadoParamList, todavía está en el mismo orden … no pasó nada.

ACTUALIZADO:

mierda, sí jodí el último, aquí está el código de trabajo:

 List<KeyValuePair> sortedParamList = parameterList.OrderBy(p => p.Key, StringComparer.Ordinal) .ThenBy(p => p.Value, StringComparer.Ordinal).ToList(); 

List.Sort no devuelve la lista ordenada; más bien, realiza la clasificación “en el lugar”, modificando la instancia de lista en la que se llama. Probablemente quieras usar:

 List> sortedList = parameterList.ToList(); sortedList.Sort((left, right) => left.Key.Equals(right.Key, StringComparison.Ordinal) ? string.Compare(left.Value, right.Value, StringComparison.Ordinal) : string.Compare(left.Key, right.Key, StringComparison.Ordinal)); 

El siguiente LINQ es semánticamente equivalente, pero significativamente más claro:

 List> sortedList = parameterList.OrderBy(p => p.Key, StringComparer.Ordinal) .ThenBy(p => p.Value, StringComparer.Ordinal) .ToList(); 

Todas las sobrecargas de la List.Sort en su lugar y no devuelva nada.

Quizás IEnumerable.OrderBy sería más apropiado para lo que estás tratando de hacer.

El método de clasificación es un método de instancia de List y ordena la instancia actual, por lo tanto no devuelve una lista.

Tendrás que dividir tu código.

 List> sortedList = parameterList.ToList(); sortedList.Sort((left, right) => left.Key.Equals(right.Key, StringComparison.Ordinal) ? string.Compare(left.Value, right.Value, StringComparison.Ordinal) : string.Compare(left.Key, right.Key, StringComparison.Ordinal)); 
 .Sort((left, right) => ... 

el método de Sort es void , y no puede ponerlo dentro de una lista <...>