2012-10-24 1 views

답변

3

의 우리가 목록 상자 있다고 가정 해 봅시다 :

ListBox b = new ListBox(); 

그럼 당신은 사용할 수 LINQ를 :

 int index = b.Items.IndexOf((
      from ListBoxItem a in b.Items 
      where a.Content.ToString() == "something" 
      select a).First()); 

또는 당신은 foreach는 사용할 수 있습니다 대부분의 경우

 foreach (ListBoxItem lbi in b.Items) 
     { 
      if (lbi.Content is string && (string)lbi.Content == "something") 
      { 
       index = b.Items.IndexOf(lbi); 
       break; 
      } 
     } 
+1

LINQ를 사용하여 문자열을 '무언가'로 설정 하시겠습니까? 귀하의 코드는'string s = "something"'과 동일합니다. –

+0

이것은 기본적으로 foreach입니다. 맞습니까? – user1695516

+1

어느 쪽이든 루프가있을 것이고 findString은 루프를가집니다. LINQ는 루프를 가지므로 foreach 접근 방식은 똑같은 것을 할 것입니다 – CloneXpert

2
var entries = listBox.Items.Where(item => item.ToString() == "something"); 
+1

thx 그러나 이것은 C# 질문이며 "where"가 없습니다 – user1695516

+3

확실하게 Linq에 대해 들어 보셨습니까 –

0

, ListBox의 ItemsSource를 실제 공동 작업에 바인딩하려는 경우 . IEnumerable을 구현하는 코드에서 llection은 다음과 같이 당신의 캐릭터 라인의 선두로부터, 찾기 위해 어디에요() 먼저() 문을 사용하면 프로그램에서 항목을 선택하려면 다음

List<string> lstb = new List<string>() { "StringA", "StringB", "StringC" }; 
string stringC = lstb.Where(s => s == "StringC").First(); 

당신의 목록 :

yourListBox.SelectedItem = stringC; 

그러나 나는 강하게 당신이 데이터 바인딩 및 WPF와의 상호 작용이 많은에 의해 제어 단순화 MVVM 모델에 대해 배울 수있는 시간을 보시기 바랍니다.

관련 문제