C#匿名類型的訪問,我在那裏用匿名類型的集合填充組合框:其他方法
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);
}
然後,在下拉列表中的SelectedIndexChanged方法,我想檢索所選的Id項,但我無法訪問「Id」屬性,在myComboBox.SelectedItem中是選定的對象。
private void myComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (myComboBox.SelectedItem != null)
{
var x = myComboBox.SelectedItem;
¿¿¿ ???
}
}
任何想法?
如果你只是需要的ID你可以使用myCombobox.SelectedValue? – saus
* dynamic *關鍵字會讓你陷入困境。匿名類型的成員具有*內部*可訪問性。換句話說,當您的UI代碼位於單獨的程序集中時,您無法訪問它們。這是非常普遍的,將UI與數據模型分離是一種值得追求的方式。這裏不要使用匿名類型。 –
使用匿名和/或動態類型不是這裏的答案。你自己的輕量級類型有什麼問題? (或者,對於此特定示例,['KeyValuePair'](http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx)?) –
LukeH