joh*_* Gu 4 c# asp.net asp.net-mvc entity-framework
我的asp.net mvc web应用程序中有以下方法,以检查ip地址是否已经存在: -
public bool ISTMSIPUnique(string ip, int? id=0)
{
var technology = FindTechnology(id.Value);
var result = tms.TechnologyIPs.Where(a.IPAddress.ToUpper() == ip.ToUpper());
return (result.Count() == 0);
}
Run Code Online (Sandbox Code Playgroud)
但我注意到a.IPAddress.ToUpper() == ip.ToUpper()会做以下事情: -
那么这背后的规则是什么?我应该总是修剪()字符串,然后将其保存到SQL Server DB以克服此问题,因为IP地址不能包含空格吗?
由于您发布了实际使用EF 的详细信息,因此我对字符串比较的评论无效.
假设您的数据库是Sql Server,或者符合ANSI标准的任何数据库进行字符串比较,则在比较之前将字符串填充为相同的长度.所以'test'被填充为与'test'相同的长度,通过在比较字符串之前附加一个空格字符,因此它们评估为相等.相反,当比较'test'和'test'时,'test'被填充到'test',与'test'的长度相同,这仍然导致字符串不能比较为等价.
http://support.microsoft.com/kb/316626
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |