[英]orderby () containing numbers and letters
我想按升序對包含數字和字母的數組進行排序,這些值作為字符串存儲在數據庫中。
這是我的清單
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);
很簡單
string[] allScenes = {"4B","1A","1","1B","2","4C"};
var result = allScenes.OrderBy(x => x.First()).ThenBy(x => x.Last());
當值以string
形式存儲到數據庫中時,您只需要編寫OrderBy(e=> e)
。
下面的代碼證明了這項工作:
string[] items = {"4B", "1A", "1", "1B", "2", "4C", "4"};
items.OrderBy(e=> e)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.