首先,我想报告一下,由于我的英语,这是一个从西班牙语到英语的机器翻译,请原谅翻译中可能存在的错误。
我在我正在做的小程序中遇到问题,我希望你能帮助我: 我有一个带有两个表客户(pelo2发)的数据库,我在两个不同的窗口中访问它们,首先在第一个窗口中有一个删除按钮,删除所有选定的客户记录,但是让其他窗口显示所有客户数据窗口并更改它给了我以下错误:
Unable to cast object of type 'System.Data.Linq.DataQuery`1[Peluqueria.Pelos2]' to type 'Peluqueria.Pelos2'.
偶尔会发生按钮Eliminar
private void Eliminar_Click(object sender, RoutedEventArgs e)
{
MessageBoxResult result = MessageBox.Show("Seguro que quieres eliminar este cliente?", "Confirmar",
MessageBoxButton.YesNo, MessageBoxImage.Information);
if (result == MessageBoxResult.Yes)
{
Pelo guar = (Pelo)Application.Current.Properties["seleccionar"];
var verTrabajo = (from o in baseDeDatos.Pelos2s
where o.num == guar.num
select o);
baseDeDatos.Pelos2s.DeleteOnSubmit((Pelos2)verTrabajo);
baseDeDatos.SubmitChanges();
actualizarDatos();
}
}
特别是在行中:
baseDeDatos.Pelos2s.DeleteOnSubmit((Pelos2)verTrabajo);
我必须说我得到了同样的错误,即使使用baseDeDatos.Pelos。 我可以帮你知道我做错了什么吗? 它能以不同的方式完成吗? 谢谢你的帮助。
答案 0 :(得分:3)
这一行:
var verTrabajo = (from o in baseDeDatos.Pelos2s
where o.num == guar.num
select o);
返回一个集合。很可能该集合只包含您希望删除的一条记录,但您需要具体。
如果您希望它返回一个结果,那么您可以使用该结果删除尝试使用SingleOrDefault():
var verTrabajo = (from o in baseDeDatos.Pelos2s
where o.num == guar.num
select o).SingleOrDefault();
在将其用于删除之前,请务必检查它是否为null
。