2010-02-16 4 views
2

일반 컬렉션에는 개체 컬렉션이 있습니다.C에서 컬렉션의 일반 목록 탐색 #

이 컬렉션을 탐색하는 가장 좋은 방법이 무엇인지 궁금합니다. "MoveNext", "MovePrevious"등과 같은 작업을 수행하고 싶습니다.

기본적으로 내 컬렉션은 여러 단계로되어 있으며 단계별로 이동할 수 있기를 원합니다.

는 SQL

+0

SQL과 어떤 관련이 있습니까? –

답변

6

당신은 LinkedList<T> 클래스를 사용할 수 있습니다에서 MoveNext를 및 MovePrevious의 C#을 동등한 있습니다.
각 요소에는 이전 및 다음 요소에 대한 참조가 있습니다.
예를 보려면 설명서 링크를 확인하십시오.

+0

잘 작동 할 수도 있습니다. – Solyad

+0

LinkedList 개체가 작동했습니다. 시스템이 검색 매개 변수를 기반으로 노드 위치를 찾고 이에 따라 컨트롤을 활성화하려면 잠시 시간을 들였습니다. (동적 폼 시스템에서 기본 워크 플로 관리자를 구축 중이며 어디에서 "요청할 수 있는지" 그것은 흐름에 있으므로 일부 컨트롤을 활성화하고 양식 설정을 변경하고 나중에 체인의 같은 지점으로 사용자를 되돌릴 수 있습니다. 나는 이것이 효과가있을 것이라고 생각한다. – Solyad

0

이 기능을 구현하는 데 익숙하지 않지만 인덱스를 보유하는 변수를 사용하면 매우 간단하게 수행 할 수 있습니다. 당신이 MoveNext를 원할 때, 나는 + + 그리고 당신이 MovePrevious를 사용하기를 원할 때 나는 ---- (당신이 i를 변수로 사용한다고 가정합니다).

편집 : 잘못되었습니다. 다음은 MSDN의 스 니펫입니다. 나는 그것으로 깊게보고하지 않은,하지만 그것은 그냥 목록에 Current 속성을 추가 StringCollections

public static void PrintValues2(StringCollection myCol) { 
     StringEnumerator myEnumerator = myCol.GetEnumerator(); 
     while (myEnumerator.MoveNext()) 
     Console.WriteLine(" {0}", myEnumerator.Current); 
     Console.WriteLine(); 
    } 
3

에 대한 기사였다.

테스트하지 않았습니다. 그냥 똑바로 보인다.

등 원하는대로 구현해야하는 경비원이 있습니다. 시작 인덱스 -1에서 시작하여 movenext가 필요한가요? 당신이 열거를 사용할 수 전진을 위해 당신

public class BackAndForthList<T> : List<T> 
    { 
     private int _current = 0; 

     public T Current 
     { 
      get { return this[_current]; } 
     } 

     public void MoveNext() 
     { 
      _current++; 
      if (_current >= Count) 

      { 
       _current = 0; 
      } 
     } 

     public void MovePrevious() 
     { 
      _current--; 

      if (_current < 0) 
      { 
       _current = Count - 1; 
      } 
     } 
    } 
+0

잘 작동 할 수도 있습니다. 왜 내가 stackoverflow에서 두 개의 답변을 표시 할 수 없다;) 오, 음, 고마워, 최소한 투표! – Solyad

1

까지 :

list.GetEnumerator().MoveNext() 
0

사용 중 하나에서 BindingList 또는 BindingSource 또는 파생 자신.