我正在对DataTable
进行搜索,但收到意外结果。该表包含一个名为Name的列。其中一行包含Name列的值"MustHaveRings"
。
DataSet
和DataTable
都将CaseSensitive
属性设置为false,这应该执行不区分大小写的搜索。
当我使用以下内容执行搜索时,不会返回任何意外的行。
string input = "musthaverings";
var foundRows = ds.Tables[5].Select("Name= '" + input + "'");
在字符串中尝试使用大写和小写字符的不同组合后,我得到以下结果
string input = "MustHaveRings";//1 row returned
string input = "Musthaverings";//no rows returned
string input = "MustHaverings";//1 row returned
string input = "mustHaveRings";//1 row returned
string input = "mustHaverings";//1 row returned
string input = "musthaveRings";//no rows returned
string input = "MUSTHAVERINGS";//no rows returned
我一直在搜索为什么我得到这些结果但却找不到答案的几天。在相同的情况下,我也尝试使用string.Compare()
并将ignoreCase
设置为false
,这会带来相同的结果。
我觉得自己看起来有点过分但却无法解决问题。我正在使用.NET 4.0。
任何人都可以解释在这种情况下等式运算符如何工作的逻辑吗?
其他信息:
从SqlServer数据库的存储过程中检索数据。以下是我回来的几行示例:
----------------------------------------------
| TypeID| Parent | Name | ForOrderOnly |
----------------------------------------------
| 375 | | Lighten Up | 357 |
----------------------------------------------
| 429 | |MustHaveRings| 429 |
----------------------------------------------
| 231 | 257 | One Pound | 385 |
----------------------------------------------
| 385 | 257 | Shop Edit | 385 |
不确定这是否有帮助,但Name
列将值存储为varchar
且整理设置为SQL_Latin1_General_CP1_CI_AS
我再次进行了测试,只有一行包含名称“MustHaveRings”并得到了相同的结果