选择下拉列表项findbytext,不区分大小写vb.net

时间:2012-02-08 14:45:35

标签: asp.net vb.net

我想在用VB.NET编写的ASP.NET中的下拉列表中选择一个项目 - 我在列表框中有值和文本,如下所示:

Volvo
Audi
etc...

但来自其他地方的价值大写......沃尔沃,奥迪......

此代码:

dropdownlist.FindByValue("CAPITAL")

没有工作并给予null沃尔沃..请帮助。

4 个答案:

答案 0 :(得分:16)

一种方式是LINQ:

Dim volvoItem = dropdownlist.Items.Cast(Of ListItem)().
    FirstOrDefault(Function(i) i.Text.Equals("Volvo", StringComparison.InvariantCultureIgnoreCase))

C#:

var volvoItem = dropdownlist.Items.Cast<ListItem>()
   .FirstOrDefault(i => i.Text.Equals("Volvo", StringComparison.InvariantCultureIgnoreCase));

答案 1 :(得分:2)

这对我有用

foreach(ListItem li in dropdownlist.Items)
    {
        if (String.Compare(li.Text, myLabel.Text, true) == 0)
            myCustomValidator.IsValid = false;  // Match Found !
    }

答案 2 :(得分:0)

就像Tim说的那样LINQ会回答你 在C#中尝试以下内容:

var item = dropdownlist.Items.Cast<ListItem>().SingleOrDefault(li =>
                                               li.Text.ToUpper() == "VOLVO");

答案 3 :(得分:0)

使用框架CI比较的其他变体。 VB:

uiList.Items.Cast(Of ListItem)
  .FirstOrDefault(Function(i) i.Text.Equals(comparand, StringComparison.InvariantCultureIgnoreCase))

C#:

uiList.Items.Cast<ListItem>()
  .FirstOrDefault(i => i.Text.Equals(comparand, StringComparison.InvariantCultureIgnoreCase));

您也可以根据自己的要求使用CurrentCultureIgnoreCase。这些通常比与ToUpper/ToLower相比更安全,因为有些文化具有意想不到的套管规则。