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

如何修改代码实现通过int类型Id列删除数据库数据?

解决int类型Id列删除数据的类型转换错误

错误CS0029是因为你把string类型变量直接和int类型的Id字段做比较,类型不匹配导致的。同时你尝试修改的代码里还把比较运算符==写成了赋值运算符=,这也是需要修正的问题。

直接修改删除方法的代码如下:

private void btnAracSil_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Seçili olan veriyi silmek istediğinize emin misiniz?", "Uyarı!", MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
        // 直接将单元格值转换为int类型,避免string转int的错误
        int secilenId = Convert.ToInt32(gridAraclar.GetFocusedRowCellValue(colId));
        // 使用int类型的Id进行筛选,注意用==比较而不是=赋值
        aracbilgiDal.Delete(context, c => c.Id == secilenId);
        aracbilgiDal.Save(context);
        GetAll();
    }
}

关键修改点:

  • 把存储选中值的变量类型从string改成int,和Id字段的类型匹配
  • 获取单元格值时直接用Convert.ToInt32转换为int类型(如果担心单元格值为空或无效,可以用int.TryParse做安全转换,示例如下)
  • 修正Lambda表达式里的运算符,用==做相等比较,而不是=赋值

如果要做更安全的转换(防止空值或非数字导致的异常),可以这样写:

private void btnAracSil_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Seçili olan veriyi silmek istediğinize emin misiniz?", "Uyarı!", MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
        object idValue = gridAraclar.GetFocusedRowCellValue(colId);
        if (idValue != null && int.TryParse(idValue.ToString(), out int secilenId))
        {
            aracbilgiDal.Delete(context, c => c.Id == secilenId);
            aracbilgiDal.Save(context);
            GetAll();
        }
        else
        {
            MessageBox.Show("Geçerli bir seçim yapmadınız!", "Hata");
        }
    }
}

内容的提问来源于stack exchange,提问作者Burhan Kes.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:25:01