как отсортировать столбец varchar, содержащий числовые значения, с помощью лямбда-выражения linq в Entity
Я использую linq lambdas для запроса MySql (обратите внимание, MySql не Sql) с Entity Framwork в MVC. Теперь у меня есть один столproduct
один из столбцов этой таблицыprice
с типом данных "VARCHAR" (примите, что я не могу изменить тип на INT, так как он может содержать значения типа "N / A" и т. д.).
Я хочу отсортироватьprice
численно колонка с linq Lambdas. Я попробовал ниже. Я используюModel
значения для фильтрации запроса.
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'));
}
Но это не сработает и выдаст мне ошибку.
LINQ to Entities не распознает метод метода System.String PadLeft (Int32, Char), и этот метод нельзя преобразовать в выражение хранилища.
Поскольку это не может преобразовать в заявление Sql Entm Framwork.
Я также попробовал ниже.
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);
}
Но я не могу сделать это, потому что это работает для списка, но я не могу сначала сделать список, а затем сделать это, как я использую linqSkip()
а такжеTake()
поэтому сначала я должен отсортировать это.
Итак, как я могу отсортировать столбец цен типа "VARCHAR" в Linq lambda?
РЕДАКТИРОВАТЬ
В таблице это:
59,59,400,185,34
Когда я использую OrderBy. Затем он дает
34,59,59,106,185,400
Это выглядит как сортировка по возрастанию. Но когда я использую OrderByDescending.ThenBy, это дает
106,185,400,34,59,59
Так что я не могу использовать это.
ПРИМЕЧАНИЕ: Пожалуйста, укажите причины, прежде чем Downvote, чтобы я мог улучшить свой вопрос ...