列を数値型にしてからソートする

  Collection Manipulation

以下のようなコレクションを「フィールド1」列でソートしたい場合、Sort Collectionを使ってもうまくソートされません。
列の型がText型だからです。

なので、指定した列の型を強引にInteger型にしてソートするオブジェクトを作りました。
ベースはSort Collecctionです。

入力

出力

ソースコード

Try
    Dim New_Collection As System.Data.DataTable
    New_Collection = New DataTable()

    For Each c As System.Data.DataColumn In Collection_In.Columns
        If c.ColumnName = Sort_Field Then
            New_Collection.Columns.Add(New DataColumn(Sort_Field, GetType(Integer)))
        Else
            New_Collection.Columns.Add(New DataColumn(c.ColumnName, GetType(String)))
        End If
    Next

    For Each r As System.Data.DataRow In Collection_In.Rows
        New_Collection.ImportRow(r)
    Next

    If Ascending Then
        New_Collection.DefaultView.Sort = Sort_Field & " ASC"
    Else
        New_Collection.DefaultView.Sort = Sort_Field & " DESC"
    End If
    Sorted_Collection = New_Collection.DefaultView.ToTable
    Success = True
    Message = ""
Catch e As Exception
    Success = False
    Message = e.Message
End Try

サンプル

https://github.com/falcslab/blueprism/tree/collection
BPA オブジェクト – 数値でソート.xml

LEAVE A COMMENT

CAPTCHA