none
list的搜尋 RRS feed

  • 問題

  • 大家好:

          假設我自訂一個query的型別 , 並宣告  Dim Query1 As List(Of Query) = New List(Of Query) , 再利用query1.add加入六筆data , 請問我如何使用indexof或其他方法來search到其中的第三筆data , 我希望找到    6,2,2,3  這筆data在list中的所在位置 , indexof可以做到嗎?或是自已必需跑迴圈來判斷?先謝謝所有回覆者.

            Dim Query1 As List(Of Query) = New List(Of Query)
            Query1.Add(New Query(1, 0, 0, 0, 1))
            Query1.Add(New Query(2, 3, 3, 1, 2))
               Query1.Add(New Query(3, 6, 2, 2, 3))
            Query1.Add(New Query(4, 1, 2, 3, 4))
            Query1.Add(New Query(5, 9, 2, 4, 5))
            Query1.Add(New Query(6, 7, 1, 1, 2))

    Public Class Query
        Private _Item As Int32
        Private _Cnt As Int32
        Private _nid As Int32
        Private _Pid As Int32
        Private _level As Int32

        Public Sub New( _
            ByVal Anid As Object, ByVal AItem As Object, ByVal ACnt As Object, ByVal Apid As Object, ByVal Alevel As Object)
            _nid = Anid
            _Item = AItem
            _Cnt = ACnt
            _Pid = Apid
            _level = Alevel
        End Sub

        Public ReadOnly Property nid() As Int32
            Get
                nid = _nid
            End Get
        End Property
        Public ReadOnly Property Item() As Int32
            Get
                Item = _Item
            End Get
        End Property
        Public ReadOnly Property Cnt() As Int32
            Get
                Cnt = _Cnt
            End Get
        End Property
        Public ReadOnly Property pid() As Int32
            Get
                pid = _Pid
            End Get
        End Property

        Public ReadOnly Property level() As Int32
            Get
                level = _level
            End Get
        End Property

    End Class

    2011年5月22日 上午 06:46

解答

  • Hi,

            Dim data = Query1.Find(Function(queryItem As Query) queryItem.Item = 6 AndAlso queryItem.Cnt = 2 AndAlso queryItem.pid = 2 AndAlso queryItem.level = 3)
            Dim idx = Query1.IndexOf(data)


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 jeff-huangch 2011年5月24日 上午 01:12
    2011年5月23日 上午 03:50

所有回覆

  • 大家好:

          假設我自訂一個query的型別 , 並宣告  Dim Query1 As List(Of Query) = New List(Of Query) , 再利用query1.add加入六筆data , 請問我如何使用indexof或其他方法來search到其中的第三筆data , 我希望找到    6,2,2,3  這筆data在list中的所在位置 , indexof可以做到嗎?或是自已必需跑迴圈來判斷?先謝謝所有回覆者.

    Hi,

    不想用迴圈的話

    用Linq或是List.IndexOf都可以做到

    使用List.IndexOf的話

    你必須帶入該資料的物件參考

    可搭配List.Find取得該資料的物件參考後帶入IndexOf查詢


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2011年5月22日 上午 07:52
  • 大家好:

          假設我自訂一個query的型別 , 並宣告  Dim Query1 As List(Of Query) = New List(Of Query) , 再利用query1.add加入六筆data , 請問我如何使用indexof或其他方法來search到其中的第三筆data , 我希望找到    6,2,2,3  這筆data在list中的所在位置 , indexof可以做到嗎?或是自已必需跑迴圈來判斷?先謝謝所有回覆者.

    Hi,

    不想用迴圈的話

    用Linq或是List.IndexOf都可以做到

    使用List.IndexOf的話

    你必須帶入該資料的物件參考

    可搭配List.Find取得該資料的物件參考後帶入IndexOf查詢


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/

    以下是我試出來linq查詢的語法 , 但至於 aaa 在query1中的index值為何?  我就不知道了  , 所謂的 "可搭配List.Find取得該資料的物件參考後帶入IndexOf查詢 " 不曉得語法如何 ?


     Dim q_lin = From q In query1 _
                              Where q.item = 6 And q.cnt = 2 And q.pid= 2 And q.level=3

            For Each aaa In q_lin
                
                MsgBox(aaa.tid)

            Next

     

    2011年5月22日 下午 02:12
  • Hi,

            Dim data = Query1.Find(Function(queryItem As Query) queryItem.Item = 6 AndAlso queryItem.Cnt = 2 AndAlso queryItem.pid = 2 AndAlso queryItem.level = 3)
            Dim idx = Query1.IndexOf(data)


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 jeff-huangch 2011年5月24日 上午 01:12
    2011年5月23日 上午 03:50
  • 謝謝您

    2011年5月24日 上午 01:26