Tengo un cuadro combinado donde se llena usando una colección de Anónimo Tipo:C# Anónimo Acceso Tipo de otro método
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);
}
Luego, en el método SelectedIndexChanged del ComboBox, quiero recuperar el ID del seleccionado elemento, pero no puedo acceder a la propiedad "Id", en myComboBox.SelectedItem es el objeto seleccionado.
private void myComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (myComboBox.SelectedItem != null)
{
var x = myComboBox.SelectedItem;
¿¿¿ ???
}
}
¿Alguna idea?
si solo necesita el ID puede usar myCombobox.SelectedValue? – saus
La palabra clave * dynamic * te va a meter en problemas. Los miembros de tipo anónimo tienen acceso * interno *. O en otras palabras, no puede acceder a ellos cuando su código de UI se encuentra en un ensamblaje por separado. Lo cual es muy común, separar la UI del modelo de datos es una actividad que vale la pena. Simplemente no use un tipo anónimo aquí. –
Usar anon y/o tipos dinámicos no es la respuesta aquí. ¿Qué pasa con tu propio tipo de peso ligero? (O, para este ejemplo en particular, ['KeyValuePair'] (http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx)?) –
LukeH