簡體   English   中英

我如何對數據表進行排序

[英]How do I sort a datatable

如何對數據表進行排序? 我需要從函數返回一個數據表。 我一直在努力奮斗這幾個小時,互聯網有幾個不同的答案,其中沒有一個似乎對我有用。

編輯:我想打自己。 在表上執行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

示例結束

我有一個相對簡單的示例表,取自教學網站。 一個轉折是在我嘗試排序的行中有重復的值。

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

我已經嘗試選擇一個數組,然后循環遍歷數組並將每一行放入一個新的數據表,但select不是抓取行。 例:

drarray = ds.Select(“我想在這里選擇全部”,“MySortColumn”)

我已經嘗試了各種循環策略,內部循環等,似乎無法弄明白。

我已經嘗試過dataTable.DefaultView.Sort =“sortExp”,但我無法讓它工作。

那我錯過了什么? 我想用DefaultView和Select方法,我只是在語法上遺漏了一些東西。

那么最好的方法是什么,我錯過了什么?

你可以使用這樣的東西:

Return table.Select("","Columns to sort on").CopyToDataTable

使用DataView在DataTable中創建數據視圖。 這允許您進行排序,過濾等。這是一個C#示例: Datatable VS dataview

這可能有助於sortExp可以是應該執行排序的字段filterExp應該評估為true或false。 假設以下字段

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

上面的代碼顯示了如何過濾和排序數據表dt_item。 過濾器表達式選擇Patient不為NULL的Date。 排序表達式導致結果按Date列排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM