2

是否有任何方法可以选择 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.

4

1 回答 1

2

这里的问题是 BindingSource 中的项目属于 Object 类型,您需要将它们转换回它们的匿名类型,而您不能这样做....实际上,您可以(查看“转换为匿名类型”部分),但这是一个聪明的技巧,将来可能行不通。

获取属性值的其他(更好)选项:

  • 使用具体类型而不是匿名类型
  • 使用反射获取属性的值
  • 仅限 C# 4.0:使用 dynamic 关键字然后调用您需要的属性
  • 获取绑定控件中的值(例如,如果您的数据源绑定到DataGridView,则获取datagridview单元格的值而不是绑定源值)
于 2009-08-28T14:27:03.393 回答