выберите элемент выпадающего списка findbytext без учета регистра vb.net

Я хочу выбрать один элемент в раскрывающемся списке в ASP.NET написано с VB.NET - у меня есть значения и тексты в listbox, как это:

Volvo
Audi
etc...
но значения из другого места в верхнем регистре... ВОЛЬВО, АУДИ..

этот код:

dropdownlist.FindByValue("CAPITAL")

не работает и дает null для Volvo.. пожалуйста помочь.

4 ответов


один из способов будет 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));

это сработало для меня

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

как Тим сказал, LINQ будет вам ответ.
в C# попробуйте следующее:

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

дополнительные варианты, используя сравнение CI рамки. В. Б.:

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, потому что некоторые культуры имеют неожиданные правила корпусе.