Linq - 'System.Guid'类型的值无法转换为'String'

时间:2011-03-10 15:41:29

标签: sql vb.net string linq

我正在使用Linqer将SQL转换为Linq:

Update EmployeeSite SET SiteId = Null 
WHERE SiteId = '86086EC5-567A-46B3-8DFC-E624F9B0324B'

获取翻译成:

Dim queryEmployeeSites = _
    From employeesites In rdc.EmployeeSites _
    Where _
      CStr(employeesites.SiteId) = "86086EC5-567A-46B3-8DFC-E624F9B0324B" _
    Select employeesites
For Each employeesites As EmployeeSite In queryEmployeeSites
    employeesites.SiteId = Nothing
Next
rdc.SubmitChanges()

但是当我尝试运行Linq代码时,我收到错误消息:

编译表达式时出错:编译表达式时出错:“System.Guid”类型的值无法转换为“String”。

我对Linq很新。有人可以解释一下是什么问题吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

Dim queryEmployeeSites = _
    From employeesites In rdc.EmployeeSites _
    Where _
    employeesites.SiteId.ToString().Equals("86086EC5-567A-46B3-8DFC-E624F9B0324B") _
    Select employeesites

For Each employeesites As EmployeeSite In queryEmployeeSites
    employeesites.SiteId = Nothing
Next

rdc.SubmitChanges()

调用ToString()应该有效,最好使用Equals进行字符串平等,或者使用String.Compare

答案 1 :(得分:3)

您可以将CStr(employeesites.SiteId)替换为employeesites.SiteId.ToString(),但最好是以相反的方式进行比较

employeesites.SiteId = Guid.Parse("86086EC5-567A-46B3-8DFC-E624F9B0324B")

通过这种方式,您不会遇到不同大写等问题。

相关问题