這個問題在這里已經有了答案: 如何對串列<string> / 字串版本號陣列進行排序? (5 個回答) 9 小時前關閉。
這篇文章在7 小時前被編輯并提交審核。
我有一個串列 versionNumbers =
v1.6.4
v2.1.19
v2.1.20
v2.10.00
v2.2.00
v2.2.01
v2.3.00
v2.4.00
v2.6.00
v2.4.01
2.9.00之后,版本應該是3.0.xx。但我有 2.10.00 及更高版本。
我用 Version.parse() 方法嘗試了 System Sort() 方法和 Orderby。但他們給了我錯誤的輸出:
v1.6.4
v2.1.19
v2.1.20
v2.10.00
v2.2.00
v2.2.01
v2.3.00
v2.4.00
v2.4.01
我期待最終是 2.10.00,依此類推。在 C# 和 linq 中對此類版本編號進行排序的最佳方法是什么?編輯:標有重復的問題并不能解決我在這里面臨的問題。
uj5u.com熱心網友回復:
使用a List<Version>,則可以簡單使用list.Sort()。要從字串中獲取版本,請使用Version.Parse. 由于您有一個v在前面,您需要將其洗掉:
List<string> versionStringList = new() {
"v1.6.4",
"v2.1.19",
"v2.1.20",
"v2.10.00",
"v2.2.00",
"v2.2.01",
"v2.3.00",
"v2.4.00",
"v2.6.00",
"v2.4.01"
};
List<Version> versionList = versionStringList
.Select(s => Version.Parse(s.TrimStart('v', 'V')))
.ToList();
versionList.Sort();
除錯器中的結果:
- versionList Count = 10 System.Collections.Generic.List<System.Version>
[0] {1.6.4} System.Version
[1] {2.1.19} System.Version
[2] {2.1.20} System.Version
[3] {2.2.0} System.Version
[4] {2.2.1} System.Version
[5] {2.3.0} System.Version
[6] {2.4.0} System.Version
[7] {2.4.1} System.Version
[8] {2.6.0} System.Version
[9] {2.10.0} System.Version
如果您也不知道如何將其轉換Version為格式化字串,其中內部版本號始終至少有兩位數,您可以使用以下方法:
private static string VersionToString(Version v)
=> $"v{v.Major}.{v.Minor}.{v.Build.ToString("D2")}";
versionStringList = versionList.Select(VersionToString).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522804.html
標籤:C#林克
下一篇:如何逐行從簡單文本中獲取資料
