仅当字符串的第一个字母介于 A 和 K 之间时,才将项目添加到下拉列表中

本文关键字:之间 项目 下拉列表 添加 第一个 字符串 | 更新日期: 2023-09-27 18:35:51

>我有一个下拉列表,需要显示已使用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);
}

仅当字符串的第一个字母介于 A 和 K 之间时,才将项目添加到下拉列表中

您正在将字面上的"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)

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

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

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

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

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

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

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