2015-10-05 73 views
0

我有一個Ilist c#,按照順序排序。問題是當數字高於10時:{11,12,13}。排序發現它們不到少於10個數字,例如:{6,7,8},因此在排序結束時,我得到的模型有11個在第一個訂單和其他模型在最後的訂單6或7個。在c中對Ilist進行排序#

我把這個訂單號作爲字符串傳遞,我不確定這是問題還是我以錯誤的方式放置代碼。有什麼建議麼?

代碼:

IList<TestGrid> myList = new List<TestGrid>(); 
     foreach (DataRow row in Browse.GridNodes.Rows) 
     { 
      TestGrid model = new TestGrid(); 
      model.Name = row["Name"].ToString(); 
      model.Type = row["Type"].ToString(); 
      model.NodeId = row["NodeId"].ToString(); 
      model.ActivOrderNo = ReadAttribute(row["NodeId"].ToString()+".CONFIG.OrderNumber", 13); 
      myList.Add(model); 
     } 

     IList<TestGrid> sortedList = myList.OrderBy(r => r.ActivOrderNo).ToList(); 
+0

這是你的意思嗎? 'List sortedList = myList.OrderBy(r => int.Parse(r.ActivOrderNo.Replace(「.CONFIG.OrderNumber」,「」)))。ToList();' –

+0

否「.CONFIG:OrderNumber」部分是隻是用於從數據庫中獲取數據的方法,然後我想根據它們的順序對其進行排序 – KamalF

回答

0

您應該將此值轉換爲數值型。例如,如果您的數據允許,則爲整數。

List<TestGrid> sortedList = myList.OrderBy(r => Convert.ToInt32(r.ActivOrderNo)).ToList(); 

此刻,你的排序是發生在字符串「12」與「1」,但它聽起來像你真的想排序的字符串中的數字的值。

+0

是的,但是當我使用Convert.ToInt32時,出於某種原因,列表沒有作爲json傳遞給Grid。所以它不會出現在視圖中!這是因爲發生了異常「輸入字符串格式不正確」。 – KamalF

+0

在這種情況下,一些數據不是整數 - 可能有些數據爲空或具有分數值?你可以用你自己的函數替換Convert.ToInt32來獲得你所擁有的字符串的數值。 – TomDoesCode

+0

答案是正確的,但我有一些空值和數據庫中的其他字符串,我解決了它,它的工作。謝謝 – KamalF