2014-09-25 4 views
0

Я пытаюсь перебирать этот список и получать значение для одного врача за раз.Итерация через список

Для каждого врача в документе excel есть множественные числа, но я хочу, чтобы результат был одним из врачей одновременно.

В документе excel идет HILL CANN CANN HILL, и в настоящее время я возвращаюсь.

Но я хочу итерацию одного врача, так что бы HILL HILL CANN CANN

 Dim physname As New List(Of String)() 

    'Get all of the data from tblPhysician that you will use and put into a list for searching the excel file 
    Sql = "select * from tblPhysician " 
    conn = New OdbcConnection(connectionString) 
    conn.Open() 
    comm = New OdbcCommand(Sql, conn) 
    dr = comm.ExecuteReader() 

    'Populate the physname list with the doctors names 
    While (dr.Read()) 
     physname.Add(dr("PhysicianName").ToString()) 
    End While 

range = oxlsheet.UsedRange 
    For rcnt = 1 To range.Rows.Count 
     For ccnt = 2 To 6 
      varray = CType(range.Cells(rcnt, ccnt), Excel.Range) 
      If (IsNumeric(varray.value)) Then 
       temp = varray.value.ToString 
      Else 
       temp = varray.value 
      End If 

      'Iterate through physname list for each doctor in the list 
      For Each doctor As String In physname 

       If (rcnt > 8) Then 
        If (IsNumeric(varray.Columns(4).value)) Then 
         temp2 = varray.Columns(4).value.ToString 
        Else 
         temp2 = varray.Columns(4).value 
        End If 

        'If the name in the excel column matches, write out the name and value 
        If (temp2 = doctor) Then 
         Console.WriteLine(varray.Columns(4).value) 
         Console.WriteLine(varray.Columns(5).value) 
         Console.ReadLine() 
        End If 


       End If 

      Next 

     Next 
    Next 
+0

Вам нужно * прочитать их * в порядке и распечатать каждый элемент по мере его чтения, или вы можете читать все, сортировать, а затем выводить каждый элемент? Также я предполагаю, что это домашнее задание. – helrich

+0

Ну, я собираюсь в итоге добавить некоторую другую информацию в файл excel. Поэтому я подумал, что итерация через каждого такого доктора даст мне информацию через час через список. Нет, не домашнее задание. Просто пытаюсь расширить свои знания по поводу vb – FoxMcCloud

ответ

1

Вот некоторые примеры использования LINQ. Я настоятельно рекомендую вам прочитать об этом, так как там есть что-то сильное. Изучение LINQ, а также лямбда-выражения и анонимные методы/функции могут быть чрезвычайно полезными!

Imports System 
IMports System.Collections.Generic 
Imports System.Linq 

Public Module Module1 

    Public Sub Main() 
     Dim physname as new List(Of String) From {"HILL", "CANN", "CANN", "HILL"} 

     ' Output the raw list as a baseline... 
     Console.WriteLine("Raw list of physicians:") 
     For Each physician as string in physname 
      Console.WriteLine(physician) 
     next 

     ' Using Distinct will select each physician once... 
     Console.WriteLine() 
     Console.WriteLine("Distinct physicians:") 
     For Each physician as String in physname.Distinct() 
      Console.WriteLine(physician) 
     next 

     ' Sort the list in place and then display... 
     Console.WriteLine() 
     Console.WriteLine("Raw physicians list ordered:") 
     physname.Sort() 
     For Each physician as String in physname 
      Console.WriteLine(physician) 
     next 
    End Sub 
End Module 

Этого пример не непосредственно исправить вашу проблему в своем роде копирование и вставка-в-вашего-имиджевый проект, но он иллюстрирует пару способов перебирать через общий список.

+0

Хорошо, спасибо вам большое! Я обязательно посмотрю на LINQ. – FoxMcCloud

Смежные вопросы