是否有任何方法可以选择 DataSource 为匿名类的 BindingSource 当前行的列?
var userResults = from u in dataContext.Users
join c in dataContext.Computers on u.ID equals c.UserID
where doSearch
&& u.Name.Contains(userNameTextBox.Text)
&& u.UserName.Contains(userUsernameTextBox.Text)
select new { u.Name, u.UserName, u.Branch, c.Installations, u.ID };
userBindingSource.DataSource = userResults;
我想获取u.ID
的当前值。
最佳答案
这里的问题是 BindingSource 中的项目属于 Object 类型,您需要将它们转换回匿名类型,但您不能这样做......实际上,you can (请查看“转换为匿名类型”部分),但这是一个聪明的技巧,将来可能行不通。
获取属性值的其他(更好)选项:
- 使用具体类型而不是匿名类型
- 使用反射来获取属性的值
- 仅限 C# 4.0:使用动态关键字,然后调用您需要的属性
- 获取绑定(bind)控件中的值(例如,如果您的数据源绑定(bind)到 DataGridView,则获取 datagridview 单元格的值而不是绑定(bind)源值)
关于c# - 以匿名类作为数据源的 BindingSource 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345437/