我想在下拉写有VB.NET名单在ASP.NET中选择一个项目 - 我在列表框的值和文本是这样的:选择下拉列表项目findbytext不区分大小写vb.net
Volvo Audi etc...
但在上情况下,从其他地方来的值... VOLVO,奥迪..
此代码:
dropdownlist.FindByValue("CAPITAL")
不能正常工作,并给予null
沃尔沃..请帮助。
我想在下拉写有VB.NET名单在ASP.NET中选择一个项目 - 我在列表框的值和文本是这样的:选择下拉列表项目findbytext不区分大小写vb.net
Volvo Audi etc...
但在上情况下,从其他地方来的值... VOLVO,奥迪..
此代码:
dropdownlist.FindByValue("CAPITAL")
不能正常工作,并给予null
沃尔沃..请帮助。
一种方法是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));
谢谢.. :) – 2012-02-08 15:00:54
就像蒂姆说LINQ将是你回答这个工作对我来说
foreach(ListItem li in dropdownlist.Items)
{
if (String.Compare(li.Text, myLabel.Text, true) == 0)
myCustomValidator.IsValid = false; // Match Found !
}
如果你处理很多物品,效率不高。如果您需要改进性能和内存使用情况,那么搜索将是您更好的选择。但要改进你的解决方案。找到该项目后,退出for循环 – 2016-06-08 05:18:15
。
在C#中尝试以下操作:
var item = dropdownlist.Items.Cast<ListItem>().SingleOrDefault(li =>
li.Text.ToUpper() == "VOLVO");
其他变种,采用框架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
更安全,因为一些文化具有意想不到的套管规则。
没有原生的方法..你必须自己写。 Tim的答案就是一个很好的例子。 – 2012-02-08 14:51:12