首页 文章

将SQL数据过滤到单个DataSet中的多个DataTable中

提问于
浏览
0

这应该很简单,但它现在正在逃避我,因为我已经十多年没有用VB编写了 .
我有一个存储过程,可以获取学生及其指定的班主任老师的列表 .
非常基本 - 只有三列: FirstNameLastNameTeacher .

我需要的是将数据加载到DataSet中,其中每个 Teacher 都有自己的DataTable,其中包含分配给它们的学生 .

样本数据:

Sample data

所以在上面的例子中,我最终会得到名为 AdamsTaggertDublin 的3个DataTables,每个DataTable都填充了与它们相关联的学生,所有这些都在一个DataSet中,这样我就可以用以下方式调用数据:

For Each dr As DataRow In ds.Tables("Taggert").Rows
    ' Do something with dr("FirstName").ToString
Next

任何帮助,将不胜感激 .

2 回答

  • -1

    old_datatable与所有老师,我会声明这个,但你使用自己的

    Dim old_datatable As New DataTable
        Dim new_dataset As New DataSet
        For Each row As DataRow In old_datatable.Rows
            Dim teacher As String = row("Teacher")
            If new_dataset.Tables.Contains(teacher) = False Then
                Dim new_datatable As New DataTable
                new_dataset.Tables.Add(new_datatable)
            End If
            new_dataset.Tables(teacher).Rows.Add(row)
        Next
    
        For Each dr As DataRow In new_dataset.Tables("Taggert").Rows
            ' Do something with dr("FirstName").ToString
        Next
    
  • 0

    我最终使用了两个答案中的元素来找到解决方案 . 我最终使用DataViews创建表,并将它们添加到新的DataSet中 . 它完美地运作 . 它遍历每条记录,但对于它处理的几百名学生来说,它实际上非常有效 . 感谢您的评论 .

    For Each row As DataRow In ds.Tables(0).Rows
                    Dim Teacher As String = row("Teacher").ToString()
    
                    If Not dsOutput.Tables.Contains(Teacher) Then
                        Dim dvStudents = ds.Tables(0).DefaultView
                        dvStudents.RowFilter = "Teacher = '" & Teacher & "'"
                        Dim subTable As New DataTable(Teacher)
                        subTable = dvStudents.ToTable(Teacher)
                        dsOutput.Tables.Add(subTable)
                    End If
                Next
    

相关问题