You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Winforms中如何结合Dapper 1.60.6使用BindingList

问题解决方案

错误原因分析

  • 编译报错的核心原因是List<T>和BindingList<T>是相互独立的集合类型,不存在隐式转换规则,也不支持直接强制类型转换
  • 运行时抛出空引用异常,是因为对Query返回的IEnumerable结果直接强转BindingList<T>,类型不匹配导致转换结果为null,后续调用时触发空引用

正确实现方式

BindingList<T>提供了可接收IList<T>参数的构造函数,你只需要将Dapper查询得到的List<T>传入构造函数即可,示例代码如下:

public BindingList<DisplayTransaction> GetTransactionsBinding()
{
    string sql = @"select * from transaction";
    var queryResult = _conn.Query<DisplayTransaction>(sql).ToList();
    return new BindingList<DisplayTransaction>(queryResult);
}

额外注意事项

  • 如果需要绑定到UI控件后支持修改属性自动同步UI,需要给DisplayTransaction类实现INotifyPropertyChanged接口
  • 调用该方法前需要确认_conn数据库连接对象已完成初始化且状态正常,避免触发其他空引用异常

内容的提问来源于stack exchange,提问作者KBagaipo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:18:00