Qual è l'approccio migliore per archiviare una matrice multidimensionale con limiti sconosciuti?

1

Sto cercando di archiviare i contenuti scaricati da diversi siti web di testi e accordi in variabili separate in una matrice multidimensionale o in array di stringhe separati, ma sono rimasto bloccato a provare approcci diversi. Ho cercato attraverso il sito e ho trovato molte domande simili, anche se incompatibili o difficili da adattare al mio progetto.

Se il contenuto è stato memorizzato in una matrice multidimensionale, apparirebbe come questo:

Cerca nel sito > Artista > Link alla pagina dell'artista > Canzone > Link alla pagina del brano > Tipi di schede (accordi, testi, schede) > Collega al tipo di scheda (accordi, testi, schede) > Contenuto

Una buona rappresentazione visiva di questo array sarebbe simile a questa:

Tienipresentecheilcontenutoèdinamico,quindinonèpossibilepermeeseguireilboundingdiarrayconhard-codesenzaprimarecuperareladimensionedelcontenutochestomemorizzando(ades.quantitàdibraniperartista)

Diseguitosonoriportatigliapproccichehoprovatoelelorocarenze,odovenonsonoriuscitoaimplementarecorrettamente:

Lematricimultidimensionali(frastagliate)richiedevanolimitiesplicitiesolol'arraypiùadestrapuòessereridimensionato.(Questoapprocciopuòesserefattofunzionareimpostandolimitiesplicitidopochetuttoilcontenutoèstatocatturato,malacreazionedivariabilitemporaneeeilloropassaggioall'arraymultidimensionalerichiedemoltocodiceesembraunasoluzione"sporca" al mio problema. )

Le tuple sembravano promettenti, ma per qualche ragione, non ero in grado di creare una tupla contenente diversi tipi di variabili, o l'approccio era confuso.

I singoli array non mi davano abbastanza flessibilità e richiedevo la creazione di più nuovi array in modo dinamico. (ad esempio una matrice per l'elenco di brani per un artista specifico, un'altra per i collegamenti a schede in una canzone specifica, ecc.)

Sono sicuro di aver provato altri, ma al momento non riesco a ricordare, ho visto un approccio simile fatto con Strutture su un campione per un controllo utente qui e altri che hanno implementato un database locale per contenere tutto il elementi.

Tutto ciò che serve è un approccio semplicistico ma funzionale.

Qualsiasi aiuto è gradito.

Un'altra rappresentazione qui:

    
posta cadomani 14.07.2014 - 08:25
fonte

1 risposta

5

Sembra che la tua difficoltà principale sia che stai usando array invece di liste. Le liste non hanno il problema di richiedere una dimensione iniziale; puoi ingrandirle o restringerle se necessario.

Ho anche l'impressione che pensi di dover archiviare l'intero contenuto del sito web in un'unica struttura dati. Non lo fai; un database relazionale come SQL Server sarebbe sufficiente. Artisti, canzoni e contenuti di canzoni entrerebbero ciascuno nella propria tabella nel database.

Supponendo che quello che cerchi davvero sia un ViewModel, sarebbe simile a questo:

Public Class ArtistSongViewModel
    Public Property Artist() As Artist
        Get
            Return m_Artist
        End Get
        Set
            m_Artist = Value
        End Set
    End Property
    Private m_Artist As Artist
    Public Property Hyperlink() As String
        Get
            Return m_Hyperlink
        End Get
        Set
            m_Hyperlink = Value
        End Set
    End Property
    Private m_Hyperlink As String
    Public Property Songs() As List(Of Song)
        Get
            Return m_Songs
        End Get
        Set
            m_Songs = Value
        End Set
    End Property
    Private m_Songs As List(Of Song)
End Class

Public Class Song
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set
            m_Name = Value
        End Set
    End Property
    Private m_Name As String
    Public Property Hyperlink() As String
        Get
            Return m_Hyperlink
        End Get
        Set
            m_Hyperlink = Value
        End Set
    End Property
    Private m_Hyperlink As String
    Public Property Content() As List(Of SongContent)
        Get
            Return m_Content
        End Get
        Set
            m_Content = Value
        End Set
    End Property
    Private m_Content As List(Of SongContent)
End Class
    
risposta data 14.07.2014 - 17:20
fonte

Leggi altre domande sui tag