1

我有一个下拉列表,需要显示已使用SqlHelper.FillDataTable. 我使用 for each 语句将每个值放入列表项,然后将该项目添加到下拉列表值中。仅当名称的第一个字母(这些是数据库中的名称)在 A 和 K 之间时,我才想将此项目添加到下拉列表中。我编写的当前 if 语句导致没有值被放入下拉列表列表。这是当前代码:

ListItem NewItem = new ListItem();
NewItem.Text = dr_UsersToShow["ViewValue"].ToString();
NewItem.Value = dr_UsersToShow["DataValue"].ToString();
string str = Convert.ToString(NewItem.Text[0]);
if (String.Compare("str", "A", true) >= 0 && String.Compare("str", "K", true) <= 0)
{
    this.dlNewUserList.Items.Add(NewItem);
}
4

3 回答 3

3

您正在将文字“str”与“A”和“K”进行比较。您想将字符串 str与“A”和“K”进行比较。只需从“str”中删除引号。

改变这个

if (String.Compare("str", "A", true) >= 0 && String.Compare("str", "K", true) <= 0)

对此

if (String.Compare(str, "A", true) >= 0 && String.Compare(str, "K", true) <= 0)
于 2012-05-30T16:42:35.300 回答
0

您还可以将 if 条件更改为:

if (str[0] >= 'A' && str[0] <= 'K')

我认为这比使用比较方法更有效。为了使它更具可读性(尽管不是真的必要),您可以更进一步并执行以下操作:

var firstChar = str[0];
if (firstChar >= 'A' && firstChar <= 'K')

我看到当我重新阅读您传递true给比较函数以忽略大小写的原始问题时,那么您真正想要的是:

var firstChar = str[0].toUpper();
if (firstChar >= 'A' && firstChar <= 'K')
于 2012-05-30T17:33:32.123 回答
0

您应该从“str”中删除引号,在这里您正在比较字符串“str”,我确定这不是您想要的。您想比较字符串变量 str 中包含的任何内容。

于 2012-05-30T16:43:40.697 回答