gpt4 book ai didi

c# - 包含数字和字母的orderby()

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:14 26 4
gpt4 key购买 nike

我想按升序排列一个包含数字和字母的数组这些值作为字符串存储在数据库中。

这是我的 list

4B
1A
1
1B
2
4C
4

并希望他们像这样排序,其中数字按字母顺序升序后跟字母。

1
1A
1B
2
4
4B
4C

到目前为止我已经尝试过了

 allScenes.OrderBy(x => Convert.ToInt32(x.SceneNumber)).ToList()

 allScenes.OrderBy(x => Convert.int.parse(x.SceneNumber)).ToList()

但由于数字后面的字母,两者都不起作用。知道我如何才能完成这项工作吗?

最佳答案

给定您的示例数据,其中第一个数字始终是一位数字:

allScenes.OrderBy(x => x.SceneNumber).ToList()

如果您可能有多位数字,请提供它们并按排序顺序提供它们。

这是对多位数字进行排序的一种方法:

var allScenes = new[]{
new {SceneNumber="4B"},
new {SceneNumber="1A"},
new {SceneNumber="1"},
new {SceneNumber="1B"},
new {SceneNumber="2"},
new {SceneNumber="14"},
new {SceneNumber="4C"},
new {SceneNumber="14A"},
new {SceneNumber="200"},
new {SceneNumber="200A"},
new {SceneNumber="200B"}
};
var nums="0123456789".ToCharArray();
var result=allScenes
.OrderBy(x=>x.SceneNumber.LastIndexOfAny(nums))
.ThenBy(x=>x.SceneNumber);

结果:

1 
1A
1B
2
4B
4C
14
14A
200
200A
200B

数据库可能无法将 LastIndexOfAny 函数转换为类似 SQL 的函数,因此您可能需要在 .OrderBy() 之前执行 .ToList():

var nums="0123456789".ToCharArray();
var result=allScenes
.ToList()
.OrderBy(x=>x.SceneNumber.LastIndexOfAny(nums))
.ThenBy(x=>x.SceneNumber);

关于c# - 包含数字和字母的orderby(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30987026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com