Comment OrderBy un entier en une chaîne de caractères dans une requête Linq

J'ai des données provenant d'une DB que je ne peux pas facilement modifier le schéma d'. Je veux les trier et de les lier à un contrôle basé sur un IDENTIFIANT numérique. Le problème c'est que l'API stocke le nombre en une chaîne de caractères au lieu d'une int et Linq barfs sur la tentative de conversion.

myControl.DataSource = dataFromDB.OrderBy(o => int.Parse(o.StringHoldingAnInt));

LINQ to entities ne reconnaît pas la méthode 'Int32 Parse(System.String)', et cette méthode ne peut pas être traduit dans un magasin d'expression.

Convert.ToInt32 ne fonctionne pas non plus.

LINQ to entities ne reconnaît pas la méthode 'Int32 ToInt32(Système d'.String)', et cette méthode ne peut pas être traduit dans un magasin d'expression.

Tri comme une chaîne de caractères n'est pas approprié parce que les valeurs ne sont pas tous de la même longueur et qu'il serait de commande comme ceci: 1, 10, 11, 2, 3..

  • Quelle quantité de données est-il? Serait-il possible d'effectuer un tri sur le côté client?
  • Vous pouvez essayer de le tampon de la chaîne de caractères '0', de sorte qu'ils ont tous la même longueur... mais je ne suis pas sûr de Chaîne.PadLeft est pris en charge par Linq.
  • plusieurs centaines de lignes dans la base de données, seulement quelques dizaines de lignes après le Where() requête j'ai omis de ma question.
  • Linq-to-Entités n'aime pas la Chaîne.PadLeft soit.
InformationsquelleAutor Dan Neely | 2011-11-10