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

3

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

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

带有HTML标签的内容:

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个回答

4

您可以将CStr(employeesites.SiteId)替换为employeesites.SiteId.ToString(),但最好是反过来比较。

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

这样做可以避免出现大小写等不同的问题。


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


为什么不使用等号运算符呢?它似乎已经被重载以调用Equals方法,而且对我来说更易读。 - Chris Dunaway

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接