我想在用VB.NET编写的ASP.NET中的下拉列表中选择一个项目 - 我在列表框中有值和文本,如下所示:
Volvo Audi etc...
但来自其他地方的价值大写......沃尔沃,奥迪......
此代码:
dropdownlist.FindByValue("CAPITAL")
没有工作并给予null
沃尔沃..请帮助。
答案 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
相比更安全,因为有些文化具有意想不到的套管规则。