我按照desc顺序对一组记录进行了排序,而不是将PK-10放在顶部我得到了PK - 9为什么会这样,即使你删除了前缀并对其返回9进行排序。请建议一个解决方案在sql server或C#
中UniqueIdentificationNo
PK - 9
PK - 8
PK - 7
PK - 6
PK - 4
PK - 2
PK - 10
SELECT [UniqueIdentificationNo]
FROM [Product] order by [UniqueIdentificationNo] desc
C#代码,int.parse返回错误,此代码也返回PK-9
var lastProduct = DbContext.Products.OrderByDescending(x => int.Parse(
(x.UniqueIdentificationNo ?? string.Empty).Replace(prefix, string.Empty).Trim())).FirstOrDefault();
答案 0 :(得分:0)
如果结果列表如下所示:
List<string> UINumber = new List<string>(){ "PK - 9",
"PK - 8",
"PK - 7",
"PK - 6",
"PK - 4",
"PK - 2",
"PK - 10"};
然后您可以使用以下代码按降序对它们进行排序:
var soretedList = UINumber.OrderByDescending(x =>Convert.ToInt16(
x.Substring(x.IndexOf("- ") + 1))
).ToList();
答案 1 :(得分:0)
在sqlserver中,您需要通过以下方式修改顺序。
SELECT [UNIQUEIDENTIFICATIONNO]
FROM product
ORDER BY CONVERT(INT, RIGHT([UNIQUEIDENTIFICATIONNO],
Len([UNIQUEIDENTIFICATIONNO]) - Charindex('-', [UNIQUEIDENTIFICATIONNO]))) DESC
答案 2 :(得分:0)
如果所有数据都以相同的方式(PK -
)开始,您可以执行以下操作。
SELECT
UNIQUEIDENTIFICATIONNO
FROM
product
ORDER BY
RIGHT(UNIQUEIDENTIFICATIONNO, LEN(UNIQUEIDENTIFICATIONNO) - 4) * 1