2012-07-26 49 views
1

我在VarEmpID变量中获得正确的员工标识。当我点击删除 它给我删除linq中的记录到sql(vb.net)我的代码有什么问题?

无法强制类型为'System.Data.Linq.DataQuery`1 [my name space]的对象输入'namespace'。

进入这里

Protected Sub radGrid1_DeleteCommand(ByVal source As Object, ByVal e As GridCommandEventArgs) Handles radGrid1.DeleteCommand 

      Dim VarEmpId As String = (CType(e.Item, GridDataItem)).OwnerTableView.DataKeyValues(e.Item.ItemIndex)("EmpId").ToString() 

      Using dc1 As New EmployeesDataClassesDataContext() 

      Dim EmployeeEntry = (From p In dc1.Employees 
      Where (p.EmpId = VarEmpId) 
           Select p) 

      dc1.Employees.DeleteOnSubmit(EmployeeEntry) 
      dc1.SubmitChanges() 

      Dim queryResults = (From queryItem In EmployeeEntry Select queryItem).ToList() 
      If queryResults.Any Then 
       radGrid1.DataSource = queryResults 
       radGrid1.DataBind() 
      End If 

     End Using 



    End Sub 

回答

1
dc1.Employees.DeleteOnSubmit(EmployeeEntry) 

这方法需要一个Employee实例代码。相反,您通过了员工查询。

Dim EmployeeEntry = (query) 

这是查询,而不是条目。考虑调用Enumerable.First获取查询的第一个结果,然后删除该结果。

+0

修正的已暗淡EmployeeEntry =(上接第在dc1.Employees 凡(p.EmpId = VarEmpId) 选择P).singleorDefault()之后注释掉queryresults部分和数据绑定再次它解决了我的问题。 – SmilingLily 2012-07-26 19:14:34

0

已修改添加Dim EmployeeEntry =(从p在dc1.Employees中(p.EmpId = VarEmpId)选择p).singleorDefault()在注释掉queryResults部分并绑定了数据后,它解决了我的问题。 - SmilingLily