如何像使用DataGridView.DataSource一样使用List <Dynamic>?

Joh*_*ntu -1 .net c# datagridview dapper

我正在尝试将a绑定List<dynamic>到DataGridView DataSource属性.虽然编译时没有错误,但也没有显示任何列.

如果我预先创建列,我会显示要显示的行,但它们中没有数据.

简单地说,如何List<dynamic>在DataGridView中正确使用对象?

D S*_*ley 7

如果我没记错的话,Dapper的动态查询返回一个ExpandoObjects 集合,它允许你动态访问属性person.Name,但是底层对象实际上没有Name属性.它使用运行时绑定从内部键/值字典中提取数据.由于默认数据绑定DataGridView使用反射来获取对象的属性,因此它不会找到从查询返回的列.

所以你有几个选择:

  • 将结果水合为具体类型而不是 dynamic
  • 指定要在您的显示中显示的列,DataGridView而不是使用默认绑定.
  • 将动态结果转换为DataTable使用类似于此答案的内容.