6

データテーブルをソートするにはどうすればよいですか? 関数からデータテーブルを返す必要があります。私はこれに何時間も苦労してきました.インターネットにはいくつかの異なる答えがありますが、どれもうまくいかないようです.

編集:自分を殴りたいです。テーブルで DataView.Sort を実行し、次に DataView.ToTable() を実行して、並べ替えられたデータを新しいデータセットに入れます... 例:

Dim view As New DataView(OriginalDataSet) 'Put your original dataset into a dataview
view.Sort = "ColumnName" ' Sort your data view
Dim NewDataSet As DataTable = view.ToTable() ' Put your dataview into a new datatable

例の終わり

教育ウェブサイトから取った、比較的単純な例の表を以下に示します。1 つのひねりは、並べ替えようとしている行に重複する値があることです。

Module Module1

    Sub Main()
    ' Get a DataTable instance from helper function.
    Dim table As DataTable = GetTable()
    End Sub

    ''' <summary>
    ''' Helper function that creates new DataTable.
    ''' </summary>
    Function GetTable() As DataTable
    ' Create new DataTable instance.
    Dim table As New DataTable
    ' Create four typed columns in the DataTable.
    table.Columns.Add("Dosage", GetType(Integer))
    table.Columns.Add("Drug", GetType(String))
    table.Columns.Add("Patient", GetType(String))
    table.Columns.Add("Date", GetType(DateTime))
    ' Add five rows with those columns filled in the DataTable.
    table.Rows.Add(25, "Indocin", "David", DateTime.Now)
    table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now)
    table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now)
    table.Rows.Add(21, "Combivent", "Janet", DateTime.Now)
    table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now)
table.Rows.Add(21, "Aspirin", "Janet", DateTime.Now)
    Return table
    End Function

End Module

配列を選択してから、配列をループして各行を新しいデータテーブルに入れようとしましたが、選択は行を取得していません。例:

drarray = ds.Select("ここですべて選択したい", "MySortColumn")

内部ループなど、さまざまなループ戦略を試しましたが、それを理解できないようです。

dataTable.DefaultView.Sort = "sortExp" を試しましたが、うまくいきません。

それで、私は何が欠けていますか?DefaultView および Select メソッドを使用すると、構文的に何かが欠けているだけだと思います。

では、何が最善の方法であり、何が欠けているのでしょうか?

4

3 に答える 3

15

次のようなものを使用できます。

Return table.Select("","Columns to sort on").CopyToDataTable
于 2013-10-21T22:43:36.740 に答える
1

これは、sortExp が true または false に評価される必要がある filterExp を実行するベースのフィールドになることができるのに役立ちます。次のフィールドを想定

Dim filterExp As String = "Patient<> ''"
Dim sortExp As String = "Date "
dt_item.Select(filterExp, sortExp, DataViewRowState.CurrentRows)

上記のコードは、データ テーブル dt_item をフィルター処理して並べ替える方法を示しています。フィルター式は、Patient が NULL でない Date を選択します。並べ替え式に​​より、結果が日付列で並べ替えられます

于 2016-05-06T12:07:57.927 に答える