2012-02-08 6 views
9

-이 같은 목록 상자의 값과 텍스트를 가지고 :선택 드롭 다운 목록 항목 findbytext 내가 VB.NET로 작성된 ASP.NET에서 다운 목록 드롭 한 항목을 선택합니다

 
Volvo 
Audi 
etc... 

그러나 대문자로 다른 장소에서 오는 값 ... VOLVO, AUDI ..

이 코드 :

dropdownlist.FindByValue("CAPITAL") 

하는 작업과 볼보에 대한 null을 포기하지 않을가요가 ... 도와주세요.

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

고유 한 방법이 없습니다. 직접 작성해야합니다. 팀 대답은 좋은 예입니다. –

답변

14

한 가지 방법은 LINQ 것이다. C#에서
다음과 같은 시도 :

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

고맙습니다. :)) –

1

팀은 LINQ 당신이 대답이 될 것 말했듯이 나를

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

많은 아이템을 가지고 일하는 것이 효율적이지 않습니다. 그런 다음 성능 및 메모리 사용을 향상시켜야 할 경우 검색 기능을 사용하는 것이 좋습니다. 그러나 당신의 솔루션을 개선하십시오. 항목이 발견되면 for 루프를 종료하십시오. –

0

근무

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과 비교하는 것보다 안전합니다. 일부 문화권에는 예기치 않은 케이스 규칙이 있기 때문입니다.