我想按升序顯示添加到組合框中的字串(數字)串列。該專案在 .NET 4.7.2 中
我有一個數字字串串列,例如: {"3.453","1.123","2.024","1.567"}
我希望當這些顯示在我的組合框中時,它們按順序顯示:{,"1.123","1.567","2.024","3.453"}
這些值來自讀取多個 XML 檔案,當找到 name == CardID 時,它被添加到組合框“cb_card”項中。
...
if (name == "CardID")
{
if (!mainWindow.cb_card.Items.Contains(value))
{
mainWindow.cb_card.Items.Add(value);
}
}
...
我試圖:
- 設定Combobox屬性
Sorted = "true"但出現錯誤:
XLS0413 The property 'Sorted' was not found in type 'ComboBox'.
- 我嘗試將值添加到串列中,然后對串列進行排序,最后將它們添加到組合框中。我編輯了上面顯示的代碼:
...
List<string> sortedCardId = new List<string>();
if (name == "CardID")
{
if (!mainWindow.cb_card.Items.Contains(value))
{
sortedCardId.Add();
}
}
sortedCardId.Sort();
foreach (string ID in sortedCardId)
{
mainWindow.cb_card.Items.Add(ID);
}
...
但訂單與未訂購時相同。
我嘗試了最后一個代碼的一些變體,通過將字串串列轉換為雙倍,對其進行排序并將其重新轉換為字串,但我遇到了很多錯誤,我無法用我目前的知識進行除錯。
- 我試圖將值添加到串列的陣列中,對陣列進行排序并添加值,但隨后組合框顯示為空。
非常感謝您的時間和提前幫助。
uj5u.com熱心網友回復:
您可以為此使用List.Sort。如果您確定串列僅包含可以決議為小數(或雙精度數,...)的數值,則可以使用自定義排序比較,在比較字串之前將字串轉換為小數:
var lst = new List<string>() {"3.453","1.123","2.024","1.567"};
lst.Sort((string a, string b) => (int)(decimal.Parse(a) - decimal.Parse(b)));
// This writes the list content as "1.123, 2.024, 1.567, 3.453"
Console.WriteLine(string.Join(", ", lst));
比較兩個專案時,比較回傳
- 小于 0:a 小于 b
- 0:a == b
- 大于 0:a 大于 b
這就是為什么從 a 中減去 b 會導致比較的正確結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473927.html
