2015-10-05 62 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