Avatar billede ha9953 Nybegynder
23. marts 2008 - 03:03 Der er 9 kommentarer og
1 løsning

List.Findall

Hej

Jeg forsøger at konvertere nedenstående fra C# til vb:

        public static List<Movie> GetMoviesByCategory(Guid categoryId)
        {
            List<Movie> col = Movies.FindAll(delegate(Movie p)
            {
                return p.Categories.Contains(Category.GetCategory(categoryId));
            });

            col.Sort();
            col.TrimExcess();
            return col;
        }

Mit store problem er at finde ud af, hvad der skal stå i movies.findall(?????):

Public Shared Function GetMoviesByCategory(ByVal categoryId As Guid) As List(Of Movie)
            Dim col As List(Of Movie) = Movies.findall(?????)
            col.Sort()
            col.TrimExcess()
            Return col
        End Function

Når jeg forsøger med de forskeliige automatiske konverteringssider laver de bare ged i den :-(

Håber i kan hjælpe
Avatar billede arne_v Ekspert
23. marts 2008 - 03:18 #1
Prøv:

Movies.FindAll(Function(p As Movie) p.Categories.Contains(Category.GetCategory(categoryId)))

hvis du er på .NET 3.5 !

Det virker dog ikke i .NET 2.0 ...
Avatar billede arne_v Ekspert
23. marts 2008 - 03:21 #2
I .NET 2.0 er du nødt til:

Movies.FindAll(AddressOf MyFinder)

og

Public Shared Function MyFinder(p As Movie)
    return p.Categories.Contains(Category.GetCategory(categoryId))
End Function
Avatar billede arne_v Ekspert
23. marts 2008 - 03:21 #3
Ikke compilet, så du må lige rette evt. småfejl !
Avatar billede ha9953 Nybegynder
23. marts 2008 - 03:30 #4
Tak for dit svar. Når jeg prøver dit forslag til 2.o. kommer den med følgende fejl:

Method 'Public Shared Function MyFinder(p As Movie) As Object' does not have the same signature as delegate 'Delegate Function Predicate(Of T)(obj As Movie) As Boolean'.
Avatar billede arne_v Ekspert
23. marts 2008 - 04:20 #5
Public Shared Function MyFinder(p As Movie) As Boolean
Avatar billede ha9953 Nybegynder
23. marts 2008 - 07:12 #6
perfekt. en sidste ting, inden du får dine 100p ;.)

Den melder at categoryid ikke er declaret i linien:

return p.Categories.Contains(Category.GetCategory(categoryId))
Avatar billede arne_v Ekspert
23. marts 2008 - 16:33 #7
Modvind op af bakke !?!?

Det er muligt at der findes en smartere løsning, men det eneste jeg kan komme i tanke om er:

Movies.FindAll(AddressOf (New MyFinderClass(categoryId)).MyFinder)

og

Public Class MyFinderClass
    Private Guid categoryId
    Public Sub New(target As Integer)
        categoryId = target
    End Sub
    Public Shared Function MyFinder(p As Movie) As Boolean
        return p.Categories.Contains(Category.GetCategory(categoryId))
    End Function
End Class
Avatar billede arne_v Ekspert
09. juni 2008 - 04:46 #8
all set ?
Avatar billede arne_v Ekspert
29. august 2008 - 03:23 #9
?
Avatar billede ha9953 Nybegynder
18. oktober 2008 - 15:34 #10
Sorry havde helt glemt det her - fandt aldrig en løsning - du får pointene
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester