通过列表迭代

时间:2014-09-25 17:48:32

标签: vb.net

我正在尝试迭代这个列表并一次获得一位医生的价值。

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

1 个答案:

答案 0 :(得分:1)

这里有一些使用LINQ的例子。我强烈建议你阅读它,因为那里有一些强大的东西。学习LINQ以及lambda表达式和匿名方法/函数非常有用!

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

此示例并未以一种复制并粘贴到您项目中的方式直接修复您的问题,但它说明了迭代通用列表的几种方法。