System.Data.DataTable - 按字母顺序排序

时间:2014-02-12 21:14:26

标签: vb.net

我的代码填充了SharpLibrary.WinControls.ListBoxEx

Dim MyListBox As SharpLibrary.WinControls.ListBoxEx
Private dataTable As System.Data.DataTable
dataTable  = GetNames ' Function that returns a DataTable
MyListBox.Items.Clear()
 For count = 0 To dataTable.Rows.Count - 1
    MyListBox.Items.Add(dataTable.Rows(count)("Name"))
Next

SharpLibrary显然是一些古老的图形组件API。 我希望数据按字母顺序显示。是否可以对DataTable进行排序?

编辑:另一种解决方案:

dataTable  = GetNames ' Function that returns a DataTable
dataTable.DefaultView.Sort = "Name"
MyListBox.Items.Clear()
 For count = 0 To dataTable.Rows.Count - 1
    MyListBox.Items.Add(dataTable.DefaultView.Item(count)("Name"))
Next

4 个答案:

答案 0 :(得分:2)

在将项目添加到列表框之前,您需要对数据表中的值进行排序。

假设你的项目中有Linq,那很简单。

Dim MyListBox As SharpLibrary.WinControls.ListBoxEx
Private dataTable As System.Data.DataTable
dataTable  = GetNames ' Function that returns a DataTable
Dim temp = From r In dataTable Order By r.item("Name") select r
MyListBox.Items.Clear()
If temp IsNot Nothing AndAlso temp.Any Then
    For count = 0 To temp.Count - 1
        MyListBox.Items.Add(temp(count)("Name"))
    Next
End If

如果您使用的是作为数据集一​​部分的强类型数据表,但这超出了您的问题的范围,那就更容易了。

答案 1 :(得分:0)

此链接可能会对您有所帮助:http://msdn.microsoft.com/en-us/library/73kk32zz(v=vs.110).aspx

编辑:

  Dim view As DataView = table.DefaultView
view.Sort = "LastName, FirstName"
view.RowFilter = "LastName > 'M'"
PrintTableOrView(view, "Current Values in View")

' Create a new DataTable based on the DataView,
' requesting only two columns with distinct values
' in the columns.
Dim newTable As DataTable = view.ToTable("UniqueLastNames", True, "FirstName", "LastName")

这是我相信它在代码中完成的部分。

我真的不懂VB,但它不太难,因为C#代码就在下面,我认为它们的含义应该非常相似。

答案 2 :(得分:0)

您需要使用DataView

Dim datav As New DataView
datav = dt.DefaultView
datav.Sort = "ColumnName DESC"

其中dt =您从getNames()获得的数据表。

最后,执行此操作将其再次转换为datatable数据类型。

dt = datav.ToTable()

最终代码是

Dim datav As New DataView
datav = dt.DefaultView
datav.Sort = "ColumnName DESC" 'or ASC, or anything just search for dataview.
dt = datav.ToTable()

答案 3 :(得分:0)

dataTable.DefaultView.Sort = ColumnName & " ASC"