首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Data.DataTable -按字母顺序排序

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

Stack Overflow用户
提问于 2014-02-12 21:14:25
回答 4查看 5.8K关注 0票数 0

我有这样的代码来填充一个SharpLibrary.WinControls.ListBoxEx

代码语言:javascript
复制
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进行排序吗?

编辑:另一个解决方案:

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-12 21:30:47

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

假设您的项目中有Linq可用,那么它非常简单。

代码语言:javascript
复制
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

如果您使用的是属于数据集的强类型datatable,但这超出了您的问题范围,这将更加容易。

票数 2
EN

Stack Overflow用户

发布于 2014-02-12 21:26:34

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

编辑:

代码语言:javascript
复制
  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#代码就在下面,我认为它们的含义应该非常相似。

票数 0
EN

Stack Overflow用户

发布于 2014-02-13 01:20:40

为此,您需要使用DataView

代码语言:javascript
复制
Dim datav As New DataView
datav = dt.DefaultView
datav.Sort = "ColumnName DESC"

其中dt = datatable是从getNames()获得的。

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

代码语言:javascript
复制
dt = datav.ToTable()

最终代码是

代码语言:javascript
复制
Dim datav As New DataView
datav = dt.DefaultView
datav.Sort = "ColumnName DESC" 'or ASC, or anything just search for dataview.
dt = datav.ToTable()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21739787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档