Salve a tutti,

stò facendo un test per vedere come linq (con una classe apposita) lavora con Microsoft Outlook.

mi sono imbattuto in una cosa strana.
allora io ho questo codice:

codice:
        Dim outlookProvider As New OutlookProvider
        Dim mails = From mail In outlookProvider.InboxItems
                Order By mail.SentOnBehalfOfName
                Select mail
        Dim sentbehalf = mails.GroupBy(Function(s) s.SentOnBehalfOfName)
        Dim m As Outlook.MailItem
        For Each i In sentbehalf
            Dim k = From ms In mails
                    Where ms.SentOnBehalfOfName = i(0).SentOnBehalfOfName
                    Select ms
            For iEle As Integer = 0 To k.Count
                m = k(iEle)
                If m IsNot Nothing Then Console.WriteLine(m.SentOnBehalfOfName)
                DestroyObject(m) ' funzione che distrugge l'oggetto COM
            Next
        Next
        outlookProvider = Nothing
ora succede che, eseguendo il codice, funzioni tutto a regola d'arte (anche se potrei ottimizzarlo di più, ma vabbè, è una prova!)... però quando entro nel for each i il codice è molto lento (diciamo che per farmi vedere 102 elementi ci mette 15 secondi buoni).
decido allora di dimensionare k fuori dal for each, così:

codice:
        Dim outlookProvider As New OutlookProvider
        Dim mails = From mail In outlookProvider.InboxItems
                Order By mail.SentOnBehalfOfName
                Select mail
        Dim sentbehalf = mails.GroupBy(Function(s) s.SentOnBehalfOfName)
        Dim m As Outlook.MailItem
        Dim k
        For Each i In sentbehalf
            k = From ms In mails
                    Where ms.SentOnBehalfOfName = i(0).SentOnBehalfOfName
                    Select ms
            For iEle As Integer = 0 To k.Count
                m = k(iEle)
                If m IsNot Nothing Then Console.WriteLine(m.SentOnBehalfOfName)
                DestroyObject(m) ' funzione che distrugge l'oggetto COM
            Next
        Next
        outlookProvider = Nothing
solo che quando il programma esegue "For iEle As Integer = 0 To k.Count", mi viene sollevata un'eccezione:
Impossibile trovare il membro pubblico 'Count' nel tipo 'WhereSelectEnumerableIterator(Of MailItem,MailItem)'.

volevo capire il motivo di ciò e come posso porvi rimedio.

grazie
Andrea