ho una casella combinata in cui viene riempito con una collezione di Anonymous Tipo:Tipo C# anonimo accesso da altro metodo
var results = (from row in data.Tables[0].AsEnumerable()
select new {
Id = row.Field<int>("id"),
Name = row.Field<string>("Name
}).Distinct();
myComboBox.ValueMember = "Id";
myComboBox.DisplayMember = "Name";
foreach (var n in results)
{
myComboBox.Items.Add(n);
}
Poi, nel metodo SelectedIndexChanged del comboBox, voglio recuperare l'ID del selezionato elemento, ma non posso accedere alla proprietà "Id", in myComboBox.SelectedItem è l'oggetto selezionato.
private void myComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (myComboBox.SelectedItem != null)
{
var x = myComboBox.SelectedItem;
¿¿¿ ???
}
}
Qualche idea?
se hai solo bisogno dell'id puoi usare myCombobox.SelectedValue? – saus
La parola chiave * dynamic * ti metterà nei guai. I membri di un tipo anonimo hanno accessibilità * interna *. In altre parole, non puoi accedervi quando il tuo codice UI si trova in un assembly separato. Il che è molto comune, separare l'interfaccia utente dal modello di dati è una ricerca degna. Semplicemente non usare un tipo anonimo qui. –
L'uso di anon e/o tipi dinamici non è la risposta qui. Cosa c'è che non va nel tuo tipo leggero? (Oppure, per questo particolare esempio, ['KeyValuePair'] (http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx)?) –
LukeH