2010-04-21 5 views
1

내 C#에서 - 응용 프로그램, 나는 사전 개체가 있습니다. foreach를 사용하여 객체를 반복 할 때 자연스럽게 사전의 각 요소를 가져옵니다. 그러나 MyValue 속성의 값에 따라 특정 요소 만 반복되도록하고 싶습니다.사전에 대한 사용자 정의 이터레이터?

class MyValue 
{ 
    public bool AmIIncludedInTheIteration { get; set; } 
    ... 
} 

AmIIncludedInTheIteration이 false 인 경우 foreach가 항목을 반환하지 않습니다. 나는 내 자신의 반복자를 구현하고 Dictionary-Iterator를 대체해야한다고 이해한다. 여기 누군가가 나에게 짧은 하우투를 줄 수 있니? 사전에

감사합니다, 프랭크

+0

어떤 버전의 C#을 사용하고 있습니까? –

답변

3

:

var myFilteredCollection = myCollection.Where(x => x.AmIIncludedInTheIteration); 

foreach (var x in myFilteredCollection) ... 
0

당신은 당신의 자신의있는 IEnumerator를 구현해야 다음은 MoveNext는 함수에서 반환되는 것을 제어 할 수 있습니다. 이것은 당신이에서 시작하여 페이지의 번호를 부여한다 http://www.google.com/search?source=ig&hl=en&rlz=&=&q=dotnet+custom+IEnumerator&aq=f&aqi=&aql=&oq=&gs_rfai=

구글 검색. C# 3에서 당신은 (LINQ) 확장 메서드를 사용할 수 있습니다 위의

+2

Google 검색 게시는 권장되지 않습니다. 대답이있는 경우, 그렇지 않은 경우 질문에 대답하십시오. – Oded

0

나는 당신이 당신의 사전에있는 값을 반복한다고 가정을, 당신은 이것에 대한 LINQ 방법을 사용할 수 있습니다

foreach(MyValue value in MyDictionary.Values.Where(i=>i.AmIIncludedInTheIteration)) 
{ 

} 
0

또는 사전 반복 할 때 당신은 그것을 필터링 : 그냥 생각

foreach (KeyValuePair<X, MyValue> element in dict.Where(x => x.Value.AmIIncludedInTheIteration) 
{ 
    // ... 
} 

을 ...

관련 문제