Et OrderBy Liste vs IOrderedEnumerable

J'ai couru à travers un problème inattendu avec le code suivant.

List<string> items = new List<string>();
items = items.OrderBy(item => item);

Ce code génère l'erreur:

Impossible de convertir implicitement le type de Système.Linq.IOrderedEnumerable' à 'Système.Les Collections.Génériques.Liste". Une conversion explicite existe (vous manque un plâtre?)

Il semble que je peux changer items pour être de type IEnumerable<string> et l'erreur disparaît. Mais j'ai besoin d'être en mesure d'ajouter des éléments à la liste, qui IEnumerable ne prend pas en charge.

Quelqu'un peut-il m'aider à comprendre cette erreur, et que la meilleure solution est? Est-il sécuritaire de tout simplement jeté le résultat?

  • Vous êtes le premier de la création d'une liste vide, et ensuite de tenter de sorte que la liste vide?
  • Bien sûr que non. Ce que je fais ici est d'essayer de créer un extrait de simple qui illustre le problème avec aussi peu de code que possible.
  • Mais il ne le démontre pas la question, parce que vous avez supprimé, si bien qu'il n'est pas clair de savoir si vous avez déjà une liste que vous avez besoin de trier, ou si vous avez une énumération que vous êtes en train de trier et d'entrer dans une liste.