So sortieren Sie varchar-Spalten mit numerischen Werten mit linq lambdas nach Entity

Ich verwende linq lambdas, um MySql (Note MySql not Sql) mit Entity Framwork in MVC abzufragen. Jetzt habe ich einen Tischproduct eine der Spalten in dieser Tabelle istprice mit Datentyp "VARCHAR" (Akzeptieren, ich kann den Typ nicht in INT ändern, da er Werte wie "N / A" usw. enthalten kann.)

Ich möchte sortierenprice Spalte numerisch mit Linq Lambdas.Ich habe unten versucht.Ich benutzeModel Werte zum Filtern der Abfrage.

var query = ent.Product.Where(b => b.cp == Model.CodePostal);

if (Model.order_by_flg == 2)
{
    query = query.OrderByDescending(a => a.price.PadLeft(10, '0'));
}

Aber es wird nicht funktionieren und gibt mir unten Fehler.

LINQ to Entities erkennt die Methode 'System.String PadLeft (Int32, Char)' nicht und diese Methode kann nicht in einen Geschäftsausdruck übersetzt werden.

Als es kann nicht in SQL-Anweisung von Entity Framwork konvertieren.

Ich habe auch versucht, unten.

var query = ent.Product.Where(b => b.cp == Model.CodePostal);

if (Model.order_by_flg == 2)
{
    query = query.OrderByDescending(a => a.price.Length).ThenBy(a => a.price);
}

Aber ich kann dies nicht tun, weil es für List funktioniert, aber ich kann nicht zuerst Liste machen und dann dies tun, wie ich mit LinqSkip() undTake() Also muss ich es zuerst sortieren.

Wie kann ich die Preisspalte vom Typ "VARCHAR" in Linq Lambda sortieren?

BEARBEITE

n der Tabelle ist es:

59,59,400,185,34

Wenn ich OrderBy.ThenBy benutze, gibt es

34,59,59,106,185,400

Es sieht richtig aus, als aufsteigend zu sortieren, aber wenn ich OrderByDescending.ThenBy benutze, gibt es

106,185,400,34,59,59

So kann ich das nicht verwenden.

HINWEIS: Bitte geben Sie vor der Abstimmung Gründe an, damit ich meine Frage verbessern kann ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage