1

次のように宣言された2つのリストがあります

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

Item2 の各要素に 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 の組み込みデータ構造の 1 つである 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 に答える