none
[VB 2010] - Collection per valori da N a 1 RRS feed

  • Domanda

  • Ciao,

    ho questo tipo di problema. Immaginate un un dizionario, quindi chiave univoca con più valori associati. Come posso fare per risalire da un valore alla sua chiave?

    Es. Janaury come chiave e come suoi valori Jan, Gennaio, jaun eccc... io vorrei trovando gennaio risalire a January.

    Devo per forza usare una NamedValueCollection e leggerla tutta o ci sono metodi migliori?

    Grazie mille

    Ciao BlackSun

    lunedì 20 maggio 2013 10:15

Risposte

  • Ciao BlackSun1971,

    Ciao,

    alla fine ho ribaltato la cosa. Ho creato una dictionary, quindi i valore li avrò ripetuti.

    In pratica:

    Jan = January

    Gennaio = January

    ecc...

    Ciao BlackSun

    capito , puoi recuperare la/le chiavi corrispondenti al valore specificato utilizzando Linq , per esempio:

    Public Class Form1
        'Crei un anuova istanza di un oggetto Dictionary
        Dim myDictionary As New Dictionary(Of String, String)
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            ' Lo valorizzi aggiungendo le chiavi e valori necessari
            myDictionary.Add("1", "Gennaio")
            myDictionary.Add("2", "Gennaio")
            myDictionary.Add("3", "Gennaio")
            myDictionary.Add("4", "Febbraio")
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            ' Qui esegui una query LinqToObjects andando a verificare se nelle proprietà 
            ' Value e presente il testo immesso attraverso la TextBox , e mediante l'istruzione
            ' Select selezioni le key che corrispondono con la proprietà value specificata
            Dim result = From r In myDictionary Where r.Value.Contains(TextBox1.Text) Select r.Key
    
            ' Scorri poi l'insieme enumerabile in quanto la dictionary implementa l'interfaccia
            ' Enumerable per cui puo essere visionata mediante un ciclo foreach
            For Each keyFound In result
                ' Qui visualizzi la/le key che sono state trovate
                MessageBox.Show(String.Concat("Chiave corrispondente al valore di", TextBox1.Text, " ", "e", " ", keyFound.ToString))
            Next
        End Sub
    End Class
    Con LinqToObjects e possibile eseguire opreazioni su delle collection , ma Linq non e solo questo vi sono diversi flavour e la possibilità di interrogare fonti dati per esempio i DataSet , su DataBase mediante LinqToSql , LiqnqToEntities e anche contenuti xml.  

    Ciao.



    • Modificato Carmelo La Monica lunedì 20 maggio 2013 19:17
    • Proposto come risposta Irina Turcu giovedì 23 maggio 2013 09:56
    • Contrassegnato come risposta Irina Turcu mercoledì 31 luglio 2013 14:52
    lunedì 20 maggio 2013 19:17

Tutte le risposte

  • Ciao BlackSun1971,

    Ciao,

    ho questo tipo di problema. Immaginate un un dizionario, quindi chiave univoca con più valori associati. Come posso fare per risalire da un valore alla sua chiave?

    Es. Janaury come chiave e come suoi valori Jan, Gennaio, jaun eccc... io vorrei trovando gennaio risalire a January.

    Devo per forza usare una NamedValueCollection e leggerla tutta o ci sono metodi migliori?

    Grazie mille

    Ciao BlackSun

    puoi mostrare un esempio di come implementi la dictionary con più valori ?

    Ciao.


    lunedì 20 maggio 2013 11:16
  • Ciao,

    alla fine ho ribaltato la cosa. Ho creato una dictionary, quindi i valore li avrò ripetuti.

    In pratica:

    Jan = January

    Gennaio = January

    ecc...

    Ciao BlackSun

    lunedì 20 maggio 2013 14:03
  • Ciao BlackSun1971,

    Ciao,

    alla fine ho ribaltato la cosa. Ho creato una dictionary, quindi i valore li avrò ripetuti.

    In pratica:

    Jan = January

    Gennaio = January

    ecc...

    Ciao BlackSun

    capito , puoi recuperare la/le chiavi corrispondenti al valore specificato utilizzando Linq , per esempio:

    Public Class Form1
        'Crei un anuova istanza di un oggetto Dictionary
        Dim myDictionary As New Dictionary(Of String, String)
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            ' Lo valorizzi aggiungendo le chiavi e valori necessari
            myDictionary.Add("1", "Gennaio")
            myDictionary.Add("2", "Gennaio")
            myDictionary.Add("3", "Gennaio")
            myDictionary.Add("4", "Febbraio")
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            ' Qui esegui una query LinqToObjects andando a verificare se nelle proprietà 
            ' Value e presente il testo immesso attraverso la TextBox , e mediante l'istruzione
            ' Select selezioni le key che corrispondono con la proprietà value specificata
            Dim result = From r In myDictionary Where r.Value.Contains(TextBox1.Text) Select r.Key
    
            ' Scorri poi l'insieme enumerabile in quanto la dictionary implementa l'interfaccia
            ' Enumerable per cui puo essere visionata mediante un ciclo foreach
            For Each keyFound In result
                ' Qui visualizzi la/le key che sono state trovate
                MessageBox.Show(String.Concat("Chiave corrispondente al valore di", TextBox1.Text, " ", "e", " ", keyFound.ToString))
            Next
        End Sub
    End Class
    Con LinqToObjects e possibile eseguire opreazioni su delle collection , ma Linq non e solo questo vi sono diversi flavour e la possibilità di interrogare fonti dati per esempio i DataSet , su DataBase mediante LinqToSql , LiqnqToEntities e anche contenuti xml.  

    Ciao.



    • Modificato Carmelo La Monica lunedì 20 maggio 2013 19:17
    • Proposto come risposta Irina Turcu giovedì 23 maggio 2013 09:56
    • Contrassegnato come risposta Irina Turcu mercoledì 31 luglio 2013 14:52
    lunedì 20 maggio 2013 19:17