【发布时间】:2014-06-11 13:40:39
【问题描述】:
我有一串逗号分隔的 ID。
(通过 SQL SP)我正在检索值以填充“ProductInfo”类列表,该列表具有 ID 属性和 Name 属性。
List 填充完毕后,我想按照原来的 Strings 顺序按 ID 对列表进行排序。
用于检索数据的 SP 按 ID ASC 排序,我无法更改 SP。
Public Class ProductInfo
Private _id as String
Public Property ID as String
..get..
..set..
End Property
Private _name as String
Public Property Name as String
..get..
..set..
End Property
End Class
Dim strIds as String = "56312,73446,129873,49879,38979"
Dim Products As New List(Of ProductInfo)
Products = FillProductDetails(strIds)
Products.Sort(strIds) ''''Conceptual
【问题讨论】:
-
我认为如果 ProductInfo 覆盖
.ToString以返回 ID,那么Products.Sort()就是您所需要的。否则,您可能需要提供一个提供排序智能的比较器:Sort(comparer As System.Collections.Generic.IComparer(Of T)) -
您也可以改用
SortedList。问题当然是文本比较器会失败,例如{"9011", "100003"}“9011”将排序高于“1000003”,这是 IComparer 可以处理/转换的。