1

我有两个列表声明为

Dim Item As New List(Of String)
    Dim Item2 As New List(Of Array)

现在 Item2 的每个元素都包含 Item 的元素

现在 Item 有 4 个元素

Item.Add(String.Format(record(0)))   ' Field "Item"
Item.Add(String.Format(record(1)))   ' Field "Descrip"
Item.Add(String.Format(record(2)))   ' Field "Price"
Item.Add(String.Format(record(3)))   ' Field "Bin"

现在我想根据字段“Bin”对Item2进行排序,然后在Item中的字段“Item”

以便Item2根据字段“Bin”的顺序包含项目,然后在Item中包含字段“Item”

这个怎么做?

4

1 回答 1

1

您只需要创建一个类。我们还可以利用 .Net 的内置数据结构之一,即SortedList。为了使用排序列表,您的类需要实现iComparable,我将在下面介绍。

Class Product
  public Item as string
  public Descrip as string
  public Price as decimal
  public Bin as string
end class

现在,你的类需要实现iComparable

我们将修改类如下

Class Product
  Implements IComparable

  public Item as string
  public Descrip as string
  public Price as decimal
  public Bin as string

  Public Overloads Function CompareTo(ByVal obj As Object) As Integer

    if obj is nothing then return 1

    Dim otherObj As Product = TryCast(obj, Product)
       If otherObj  IsNot Nothing Then 
           if me.bin < otherObj.bin then
             return -1
           else if me.bin = otherObj.bin andalso me.item < otherObj.item then
             return -1
           elseif me.bin = otherObj.bin andalso me.item = otherObj.item then
             return 0
           else
             return 1
       Else 
          Throw New ArgumentException("Object is not a Product")
       End If  
  End Function  

end class

现在,您应该使用SortedList(of Product)

你像这样向它添加元素

Dim MyProduct as NewProduct
MyProduct.bin = "test"
MyProduct.price = 12.0D
MyProduct.item = "test"
MyProduct.descrip = "test"

Dim MySortedList = new SortedList(of Product)
MySortedList.add(NewProduct)

MySortedList 始终保持其元素有序。

上面的代码可以优化一些,但我想你明白了。

参考

于 2013-02-10T17:29:13.687 回答