2013-04-18 3 views
0

Я пытаюсь заполнить список с помощью DataTable, у меня есть для каждого цикла, который проверяет каждую строку и добавляет элемент в список. Но код не работает, я получаю сообщение об ошибке ..Как заполнить список с помощью DataTable и для каждого цикла?

System.NullReferenceException: { "Ссылка на объект не указывает на экземпляр объекта."}

-DATA: {} 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 
+0

Зачем вы отметили это с помощью C#? – Arran

ответ

5

В настоящее время lUserNames не был инициализирован. Вы должны сделать это:

Dim lUserNames As New List(Of String) 
+0

+1 Мне нравится этот ответ лучше всего для его компактности –

+0

Спасибо, я пробовал это, и он работал красиво. – nimblebit

3

Вы объявили List, но не инициализируется его.

Меняет

Dim lUserNames As List(Of String) = Nothing 

в

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

Конечно, вы также получите NullReferenceException если таковой getDataTable возвращается Nothing вместо пустого DataTable если tblUsers будет пусты If dt.Rows.Count > 0.

1

Вы не инициализирует свой список в строке 4. Она должна быть:

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

Редактировать: видимо, это немного CSharp'ism :) Это также работает:

Dim lUserNames As New List(Of String) 
Смежные вопросы