1

首先我要报告,由于我的英语,这是从西班牙语到英语的机器翻译,请原谅翻译中可能出现的错误。

我正在做的一个小程序中有一个问题,我希望你能帮助我:我有一个包含两个表客户(pelo2 hair)的数据库,我首先在两个不同的窗口中访问它们,第一个有一个删除按钮窗口,删除所有选定的客户记录,但让另一个窗口的所有客户数据窗口并更改它会给我以下错误:

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。我可以帮助你知道我做错了什么吗?可以做不同的事情吗?谢谢你的帮助。

4

1 回答 1

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在将其用于删除之前检查它是否不是。

于 2013-08-20T08:32:02.417 回答