como classificar a coluna varchar contendo valores numéricos com linq lambdas para Entity
Estou usando o linq lambdas para consultar o MySql (note MySql não Sql) com o Entity Framwork no MVC. Agora eu tenho uma mesaproduct
uma das colunas desta tabela éprice
com o tipo de dados "VARCHAR" (Aceite, não posso alterar o tipo para INT, pois ele pode conter valores como "N / A" etc.).
Eu quero classificarprice
coluna numericamente com linq Lambdas.Eu tentei abaixo. Estou usandoModel
valores para filtrar a consulta.
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'));
}
Mas não vai funcionar e me dá um erro abaixo.
O LINQ to Entities não reconhece o método 'System.String PadLeft (Int32, Char)' e esse método não pode ser convertido em uma expressão de armazenamento.
Como ele não pode ser convertido para a declaração Sql pelo Entity Framwork.
Eu também tentei abaixo.
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);
}
Mas eu não posso fazer isso porque funciona para a lista, mas eu não posso primeiro fazer a lista e, em seguida, fazer isso como eu estou usando linqSkip()
eTake()
então primeiro eu tenho que resolver isso.
Então, como posso classificar a coluna de preços do tipo "VARCHAR" no Linq lambda?
EDITAR
Na tabela é:
59,59,400,185,34
Wnen eu uso OrderBy.ThenBy dá
34,59,59,106,185,400
Parece certo como classificação crescente, mas quando eu uso OrderByDescending.ThenBy, ele fornece
106,185,400,34,59,59
Então eu não posso usar isso.
NOTA: Por favor, forneça motivos antes do Downvote para que eu possa melhorar minha pergunta ...