c# - 以匿名类作为数据源的 BindingSource 列

标签 c# .net linq data-binding anonymous-class

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

相关文章:

c# - LINQ JOIN + GROUP BY + SUM

c# - 当没有列是动态的时将 DataTable 转换为列表

c# - foreach 按文件索引顺序遍历文件(file1.png、file2.png、file10.png)

c# - 为什么我的 linq 结果在调试器中显示十六进制值?

c# - Form.Parent 和 StartPosition.CenterParent

c# - 在 silverlight 中单击子窗口外部即可关闭子窗口

c# - 在单元测试中使用 StringBuilder 进行 PInvoking

.net - Azure WebJob QueueTrigger 消息未从队列中删除

c# - 异步等待根本不返回(.Net 4.5)

c# - 无法从存储过程中连接的其中一个表中检索列值?