DataTable选择驼峰大小写字符串无法正常工作

时间:2014-03-02 17:34:00

标签: c# select datatable case-sensitive camelcasing

我正在对DataTable进行搜索,但收到意外结果。该表包含一个名为Name的列。其中一行包含Name列的值"MustHaveRings"

DataSetDataTable都将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”并得到了相同的结果

0 个答案:

没有答案