gpt4 book ai didi

c# - Linq to SQL .Equals 将 int 与字符串进行比较时返回 true --> Id.Equals ("5") 返回 true

转载 作者:太空狗 更新时间:2023-10-29 19:58:42 26 4
gpt4 key购买 nike

我们有一位新开发人员正在学习 LinqToSql。在查看他的代码时,我们注意到他使用 .Equals 而不是 == 进行值比较。最重要的是,他正在比较 intstring。让我们完全困惑的是,它真的有效!

经过一些测试后,它似乎只适用于 LinqToSql。 Linq to objects 返回 false 并且仅执行 int.Equals(“string”) 返回 false

下面是使用两个sql表的简单测试:

Customer
Id(PK)(int)
Name(varchar)
CompanyId(FK)(int)


Company
Id(PK)(int)
Name(varchar)
Console.WriteLine("{0}.Equals(\"{1}\") returns {2}", 3, "3", 3.Equals("3"));
using (WrDataClassesDataContext wrDataContext = new WrDataClassesDataContext())
{
var customers1 = from c in wrDataContext.Customers
where c.CompanyId.Equals("3")
select c;

Console.WriteLine("int .Equals String Results: ");
foreach (Customer customer in customers1)
{
Console.WriteLine(customer.Name);
}

var customers3 = from c in wrDataContext.Customers
where c.CompanyId == 3
select c;

Console.WriteLine("int == int Results: ");
foreach (Customer customer in customers3)
{
Console.WriteLine(customer.Name);
}
}

结果:

3.Equals("3") returns False
int .Equals String Results:
Mike
Joe
Candy
int == int Results:
Mike
Joe
Candy
Press any key to continue . . .

有什么解释吗?

最佳答案

LINQ to SQL 从您的 LINQ 查询生成 SQL 代码。在 SQL 中,intstring 的比较是完全有效的。发生的情况是,通过使用 .Equals,您可以绕过 == 运算符在编译时执行的类型检查。

关于c# - Linq to SQL .Equals 将 int 与字符串进行比较时返回 true --> Id.Equals ("5") 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9329518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com