【问题标题】:How to populate List using DataTable and For Each Loop?如何使用 DataTable 和 For Each 循环填充列表?
【发布时间】:2013-04-18 10:43:01
【问题描述】:

我正在尝试使用 DataTable 填充列表,我有一个 for each 循环来检查每一行并将项目添加到列表中。但是代码不起作用,我一直收到错误..

System.NullReferenceException: {"对象引用未设置为 对象的实例。"}

-数据:{System.Collections.ListDictionaryInternal}

-HelpLink:无 - 内部异常:无

-TargetSite: {System.Collections.Generic.List`1[System.String] getListOfUsers()}

这是我的代码...

Function getListOfUsers() As List(Of String)

    'Dim i As Integer = 0
    Dim lUserNames As List(Of String) = Nothing

    Dim dt As DataTable = getDataTable(db_Config, "SELECT * FROM tblUsers")

    If dt.Rows.Count > 0 Then

        Try

            For Each dRowItem As DataRow In dt.Rows

                'i = i + 1

                'If IsDBNull(dt.Rows(0)("fldUserName").ToString) = False Then
                '    lUserNames.Add(dt.Rows(0)("fldUserName").ToString)
                'End If

                If dRowItem.Item("fldUserName").ToString <> "" Then
                    lUserNames.Add(dRowItem.Item("fldUserName").ToString)
                End If

            Next dRowItem

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End If

    Return lUserNames

End Function

【问题讨论】:

  • 为什么还要用 C# 来标记它?

标签: sql .net vb.net datatable generic-list


【解决方案1】:

目前 lUserNames 尚未初始化。你需要这样做:

Dim lUserNames As New List(Of String)

【讨论】:

    【解决方案2】:

    你已经声明了List,但是你还没有初始化它。

    所以改变

    Dim lUserNames As List(Of String) = Nothing
    

    Dim lUserNames As List(Of String) = New List(Of String)
    

    当然,如果getDataTable 返回Nothing 而不是空的DataTable,如果tblUsersIf dt.Rows.Count &gt; 0 处为空,您当然也会得到NullReferenceException

    【讨论】:

      【解决方案3】:

      您没有在第 4 行初始化您的列表。它应该是:

      Dim lUserNames As List(Of String) = New List(Of String)()
      

      编辑:显然这有点像 CSharp 主义 :) 这也有效:

      Dim lUserNames As New List(Of String)
      

      【讨论】:

        猜你喜欢
        • 2017-12-08
        • 1970-01-01
        • 2016-02-23
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        • 2021-02-14
        • 1970-01-01
        • 2017-11-14
        相关资源
        最近更新 更多