Orderby() ne pas ordonner correctement les numéros de c#

Je suis en train d'écrire une application pour mon entreprise et je suis actuellement en train de travailler sur la fonctionnalité de recherche. Lorsqu'un utilisateur recherche un élément, je veux afficher la version la plus récente (qui est stockée dans une base de données).

Le problème est, la version est stockée comme une chaîne de caractères au lieu de int, et quand je fais un OrderBy(q=>q.La Version) sur les résultats, ils sont retournés comme

1
10
11
2
3
...

Évidemment 2 vient avant 10.

Est-il un moyen pour moi de lancer la version comme un entier ou est-il un simple IComparer là-bas? Je ne pouvais pas trouver quoi que ce soit jusqu'à présent.

J'ai essayé de faire ceci:

var items = (from r in results
             select r).OrderBy(q => Int32.Parse(q.Version));

Cette compile mais ne fonctionne pas.

  • J'aurais suggéré exactement ce que vous avez fait à la fin de votre question (commande par q => int.Parse(q.Version)); qu'entendez-vous par "ne fonctionne pas"?
  • Peut-être que votre problème est ici: (q => Int32.Parse(q.Version)). Doit-il seulement être (q => Int32.Parse(q)) en conformité avec les versions de travail ci-dessous?
  • Je reçois ce message d'erreur: "la Méthode" Int32 Parse(System.String)' n'a pas pris en charge la traduction de" SQL " lors de la visualisation des résultats énumérés
  • Darcy est de filtrer une collection de quelque objet avec un Version bien; int.Parse de ne pas travailler pour cela.
  • Je ne peux pas le faire parce que la Version est la partie de l'objet de la table. Ce n'est pas seulement une simple chaîne de caractères.
  • Ah, vous êtes donc à l'aide de LINQ to SQL... toutes les réponses sont ci-dessous fournit des méthodes pour appeler OrderBy sur de simples collections (p. ex., tableaux).
  • Vous cherchez un naturel trieur/de la commande par

InformationsquelleAutor Darcy | 2010-03-09