2012-02-08 51 views
9

我想在下拉寫有VB.NET名單在ASP.NET中選擇一個項目 - 我在列表框的值和文本是這樣的:選擇下拉列表項目findbytext不區分大小寫vb.net

 
Volvo 
Audi 
etc... 

但在上情況下,從其他地方來的值... VOLVO,奧迪..

此代碼:

dropdownlist.FindByValue("CAPITAL") 

不能正常工作,並給予null沃爾沃..請幫助。

+0

沒有原生的方法..你必須自己寫。 Tim的答案就是一個很好的例子。 – 2012-02-08 14:51:12

回答

14

一種方法是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)); 
+0

謝謝.. :) – 2012-02-08 15:00:54

1

就像蒂姆說LINQ將是你回答這個工作對我來說

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

如果你處理很多物品,效率不高。如果您需要改進性能和內存使用情況,那麼搜索將是您更好的選擇。但要改進你的解決方案。找到該項目後,退出for循環 – 2016-06-08 05:18:15

0


在C#中嘗試以下操作:

var item = dropdownlist.Items.Cast<ListItem>().SingleOrDefault(li => 
               li.Text.ToUpper() == "VOLVO"); 
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更安全,因爲一些文化具有意想不到的套管規則。

相關問題