2010-08-19 6 views
0

다음과 같이 내 dict을 정의했다고 가정합니다.사전 키 (목록 <int>) C#에서 검색

Dictionary<list<int>, list<string>> d = new Dictionary<List<int>, list<string>>()

어떻게 빠르게 DICT 키와 값을 검색 할 수 있습니다.

[업데이트]

키 목록 콘텐츠를 가져오고 싶습니다. 나는

아래

List<int> KeysList= new List<int>(d.Keys);

같은 간단한 방법을 시도하지만 내 경우에 복잡한 키에서 작동하지 않습니다.

아래와 같이 KeyValuePair 만 사용할 수 있습니까?

foreach (KeyValuePair<List<int>, List<string>> pair in d) 
{ 
    KeysList= new List<int>(pair.Key); 
} 
+1

빠르게 무엇을 의미합니까? 그리고 당신은 무엇에 접근하려고합니까? – cordialgerm

+0

@erash. 나는 빠르게 변화했다. 'd.keys'의 간단한 방법처럼 –

+0

''사전을 찾고 계신가요? 그러면 마지막 줄이'List KeysList = d.Keys;'가됩니다. – Kobi

답변

3

당신은 시작하는이 잠재적 인 문제가있어 : 같음을 무시하지 않는 List<T>을, 그래서 당신은 키에 대한 값을 가져 오도록 정확한 같은 키 참조를 사용해야 할 것입니다.

당신이 참조이 경우,라고하는 데, 그것은 비록 키로 List<T>을 가지고 매우 이례적인 간단
List<string> value; 
if (d.TryGetValue(key, out value)) 
{ 
    ... 
} 

List<string> value = d[key]; 

또는

- 당신은 말할 수 우리가하려는 일에 대해 더 알고 싶습니까? 더 나은 접근법이있을 수 있습니다.

+0

첫 번째 사항을 자세히 설명해 주실 수 있습니까? * "정확히 동일한 주요 참조"*가 무엇을 의미합니까? 같은 목록에 대한 두 개의 참조 또는'Dictionary.Keys'의 참조와 함께 작동하지 않을까요? – Kobi

+0

'List value = d [key];'시도 할 수 없습니다. 내 경우 엔 효과가 없어. 그것은 함수 호출입니다, 나는 정확하게 키를 모른다. BTW, 위의 입력을 업데이트했습니다. –

+1

@ 나노 : 귀하의 질문은 아직 명확하지 않습니다. 당신은 "the"List ""에 대해 이야기하지만, 사전의 요점은 * 각 키 *가'List '이라는 것입니다. 어느 것에 관심이 있습니까? 당신이 이야기하고있는 것에 대한 짧지 만 완전한 예를 제공 할 수 있다면, 당신을 도울 것이 훨씬 쉬울 것입니다. –