如何修改代码实现通过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.
相关产品推荐
相关产品推荐

