我正在使用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很新。有人可以解释一下是什么问题吗?
谢谢!
答案 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")
通过这种方式,您不会遇到不同大写等问题。