c# – EF 4.1/Linq-to-SQL:更好的是:使用Equals还是==?

我们正在讨论在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();

为什么?

最佳答案
对于Linq To Sql,你不需要.相反,使用Object.Equals:.Where(b => Object.Equals(b.BoodschapID,id)

为什么?如果id恰好是一个可以为空的uniqueidentifier,那么SQL Generator中会出现Bug.如果使用b.BoodschapID.Equals(id)或b.BoodschapID == id和b.BoodschapID恰好是一个可以为空的Guid,生成的SQL将不会是WHERE BoodschapID IS NULL而是WHERE BoodschapID = @ p0这将不会返回任何结果.

我确信EF曾经有同样的错误.不知道它是否已经解决了.你可以找到更多细节in this question,只要知道一些答案会产生可怕的SQL.

除此之外,在我知道的Linq To SQL中,Equals和==之间没有区别.

转载注明原文:c# – EF 4.1/Linq-to-SQL:更好的是:使用Equals还是==? - 代码日志