3.915 messaggi dal 28 gennaio 2003
dato questo vettore
Dim v6 As Integer()() = {New Integer() {14, 16, 18}, New Integer() {3, 30, 40}, New Integer() {1, 10, 50}, New Integer() {2, 20, 60}}

lo ordino secondo la 1° colonna degli elementi:
v6 = v6.OrderBy(Function(c) c(0)).ToArray

vorrei trovare, nel modo più veloce, il vettore corrispondente ad un valore della 1° colonna.
Per esempio, dato 3, dovrei trovare il vettore {3,30,40}

un aiuto?

ciao

Pietro
11.857 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
se devi ottenere vari elementi con questo criterio, forse ha senso trasformare il jagged array in un dictionary, la cui chiave è rappresentata dal primo elemento dell'array di interi.

    Dim v6 As Integer()() = {New Integer() {14, 16, 18}, New Integer() {3, 30, 40}, New Integer() {1, 10, 50}, New Integer() {2, 20, 60}}
    Dim dictionary = v6.ToDictionary(Function(c) c(0), Function(c) c)
    Dim three = dictionary(3)
    Console.WriteLine(string.Join(",", three))


Eccolo in un fiddle:
https://dotnetfiddle.net/vJFHdZ


In questo modo migliorerai di molto le performance di lookup della chiave. Leggi qui a proposito delle performance dei dictionary.
https://www.dotnetperls.com/dictionary-time

ciao,
Moreno
Modificato da BrightSoul il 21 agosto 2018 13.42 -

Enjoy learning and just keep making
3.915 messaggi dal 28 gennaio 2003
Bene! ti ringrazio

Pietro
11.857 messaggi dal 09 febbraio 2002
Contributi
Occhio però che il dizionario non ammette duplicati di chiavi, quindi questa soluzione funzionerà solo se nell'array di interi non ci sono ripetizioni per il primo valore.

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.