データテーブルを並べ替えるにはどうすればよいですか?関数からデータテーブルを返す必要があります。私はこれに何時間も苦労してきましたが、インターネットにはいくつかの異なる答えがありますが、どれも私にはうまくいかないようです。
編集:私は自分自身を殴りたいです。テーブルで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
例の終わり
以下に、教育用Webサイトから抜粋した比較的単純な例の表を示します。 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メソッドを使用すると、何かが完全に欠落していることがわかります。
それで、行くための最良の方法は何ですか、そして私は何が欠けていますか?
DataViewを使用して、DataTableにデータのビューを作成します。これにより、並べ替え、フィルタリングなどを行うことができます。C#の例を次に示します。 Datatable VS dataview
次のようなものを使用できます。
Return table.Select("","Columns to sort on").CopyToDataTable
これは、sortExpを、ソートの実行に基づいて実行するフィールドである場合に役立ちます。filterExpは、trueまたはfalseと評価されます。次のフィールドを想定
Dim filterExp As String = "Patient<> ''"
Dim sortExp As String = "Date "
dt_item.Select(filterExp, sortExp, DataViewRowState.CurrentRows)
上記のコードは、データテーブルdt_itemをフィルタリングおよびソートする方法を示しています。フィルタ式は、患者がNULLでない日付を選択します。並べ替え式により、結果は日付列で並べ替えられます