Linq - “System.Guid”类型的值无法转换为“字符串”

发布于 2024-10-21 09:34:37 字数 636 浏览 3 评论 0原文

我正在使用 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”类型的值无法转换为'细绳'。

我对 Linq 很陌生。有人可以解释一下出了什么问题吗?

谢谢!

I'm using Linqer to convert SQL to Linq:

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

Gets translated into:

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()

But when I try to run the Linq code I get the error message:

Error Compiling Expression: Error Compiling Expression: Value of type 'System.Guid' cannot be converted to 'String'.

I am very new to Linq. Can someone please explain what is wrong?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千柳 2024-10-28 09:34:37

您可以将 CStr(employeesites.SiteId) 替换为 employeesites.SiteId.ToString(),但最好是相反比较这样

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

您就不会遇到大小写不同的问题等

You can replace CStr(employeesites.SiteId) with employeesites.SiteId.ToString(), but the best is to compare the other way around

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

This way you don't run into issues with different capitalization, etc.

少女情怀诗 2024-10-28 09:34:37
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

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()

Calling ToString() instead should work, also it's better to use Equals for String Equality, or use String.Compare.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文