我们有一个刚开始学习LinqToSql的新开发人员.在查看他的代码时,我们注意到他正在使用.Equals而不是==进行价值比较.最重要的是,他正在将a int与a 进行比较string.令我们感到困惑的是,它有效!
在做了一些测试之后,似乎只能使用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)
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
3.Equals("3") returns False
int .Equals String Results:
Mike
Joe
Candy
int == int Results:
Mike
Joe
Candy
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)
任何解释?
Not*_*ble 11
LINQ to SQL从LINQ查询生成SQL代码.在SQL中,一个比较int的string是完全有效的.通过使用.Equals,您可以绕过==运算符在编译时执行的类型检查.
| 归档时间: |
|
| 查看次数: |
3911 次 |
| 最近记录: |