如何正确地筛选DataTable(DataTable.Select)

10
Dim dt As New DataTable
Dim da As New SqlDataAdapter(s, c)

        c.Open()
        If Not IsNothing(da) Then
            da.Fill(dt)
            dt.Select("GroupingID = 0")
        End If

        GridView1.DataSource = dt
        GridView1.DataBind()
        c.Close()

当我调用da.fill时,我正在插入来自查询的所有记录。然后我希望过滤它们,只显示GroupingID等于0的记录。当我运行上面的代码时,我得到了所有数据,过滤器没有起作用。请告诉我如何正确地使其工作。谢谢。
3个回答

25
dt.Select()返回一个DataRow数组。
为什么不使用DataView呢?
 DataView dv = new DataView(dt);
 dv.RowFilter = "GroupingID = 0";
 GridView1.DataSource = dv;

非常简单而有效的答案。谢谢。 - AT07

3

万一......您的VB.NET代码中有一个小错误。应该使用dv.RowFilter而不是dv.RowStateFilter,因此:

Dim dt As New DataTable
Dim dv As New DataView(dt)
dv.RowFilter = "GroupingID = 0"
DataGridView1.DataSource = dv

嗨Sergio,欢迎来到SO,这并没有帮助我们太多,因为你的答案与已接受的答案完全相同。请在这里参观https://stackoverflow.com/tour。 - Arvind Maurya
我的评论是为了显示在下面的帖子上,该帖子展示了VB.NET代码,该代码实际上有一个错别字。 - Sérgio Terenas

1

接受的答案是正确的,尽管应该用vb.net给出以更好地使提问者受益。以下是VB.Net的代码:

Dim dt As New DataTable:Dim dv As New DataView(dt):dv.RowStateFilter = "GroupingID = 0":DataGridView1.DataSource = dv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接