EF 4.1 / Linq-to-SQL:哪个更好:使用 Equals 或 ==?

发布于 2024-12-15 10:09:04 字数 413 浏览 1 评论 0原文

我们正在讨论如何在 LINQ 查询中对 int 比较使用 Equals==。我们使用 EF4.1 Code First。什么更好?

var query = context.Boodschappen
                   .Where(b => b.BoodschapID == id).FirstOrDefault();

或者:

var query = context.Boodschappen
                   .Where(b => b.BoodschapID.Equals(id)).FirstOrDefault();

为什么

We're having a discussion about using Equals or == on an int comparison in a LINQ query. We're using EF4.1 Code First. What is better?

var query = context.Boodschappen
                   .Where(b => b.BoodschapID == id).FirstOrDefault();

or:

var query = context.Boodschappen
                   .Where(b => b.BoodschapID.Equals(id)).FirstOrDefault();

And why?

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

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

发布评论

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

评论(2

抠脚大汉 2024-12-22 10:09:04

对于 Linq To Sql,您两者都不需要。相反,请使用 Object.Equals: .Where(b => Object.Equals(b.BoodschapID, id)

为什么?由于 SQL 生成器中的错误(如果 id 恰好是可为空的唯一标识符)。如果使用 b.BoodschapID.Equals(id) 或 b.BoodschapID == id 并且 b.BoodschapID 恰好是可为 null 的 Guid,则生成的 SQL 将不会WHERE BoodschapID IS NULL 而是 WHERE BoodschapID = @p0 ,它不会返回任何结果,

我确信 EF 曾经有过同样的错误,不知道是否已解决。但是,您可以在此问题中找到更多详细信息,但请注意,某些答案会生成可怕的 SQL。

除此之外,据我所知,Linq To SQL 中的 Equals 和 == 之间没有区别。

For Linq To Sql, you want neither. Instead, use Object.Equals: .Where(b => Object.Equals(b.BoodschapID, id)

Why? Because of a Bug in the SQL Generator if id happens to be a nullable uniqueidentifier. If using b.BoodschapID.Equals(id) or b.BoodschapID == id and b.BoodschapID happens to be a nullable Guid, the generated SQL will not be WHERE BoodschapID IS NULL but rather WHERE BoodschapID = @p0 which will not return any results.

I know for sure that EF used to have the same bug. No idea if it's solved yet. You can find more details in this question, just be aware that some of the answers generate horrendous SQL.

Apart from that, there is no difference between Equals and == in Linq To SQL that I'm aware of.

猫烠⑼条掵仅有一顆心 2024-12-22 10:09:04

我“更喜欢”前者。它也适用于可为 null 的属性。

I 'prefer' the former. It works on nullable properties too.

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