[C#] 사전에서 키 목록을 어떻게 얻습니까?

사전의 값이 아닌 키만 원합니다.

아직이 코드를 얻을 수 없었습니다. 다른 배열을 사용하면 remove를 사용할 때 너무 많은 작업이 수행됩니다.

사전에 키 목록을 얻으려면 어떻게해야합니까?



답변

List<string> keyList = new List<string>(this.yourDictionary.Keys);


답변

당신은 단지 볼 수 있어야합니다 .Keys:

    Dictionary<string, int> data = new Dictionary<string, int>();
    data.Add("abc", 123);
    data.Add("def", 456);
    foreach (string key in data.Keys)
    {
        Console.WriteLine(key);
    }


답변

모든 키 목록을 얻으려면

using System.Linq;
List<String> myKeys = myDict.Keys.ToList();

System.Linq는 .Net framework 3.5 이상에서 지원됩니다. System.Linq 사용에 문제가 있으면 아래 링크를 참조하십시오.

Visual Studio에서 System.Linq를 인식하지 못합니다

System.Linq 네임 스페이스


답변

Marc Gravell의 답변이 도움이 될 것입니다. myDictionary.Keys그 구현하는 객체를 반환 ICollection<TKey>, IEnumerable<TKey>자신의 제네릭이 아닌 대응.

값에 액세스 할 계획이라면 다음과 같이 사전을 반복 할 수 있다고 덧붙였습니다.

Dictionary<string, int> data = new Dictionary<string, int>();
data.Add("abc", 123);
data.Add("def", 456);

foreach (KeyValuePair<string, int> item in data)
{
    Console.WriteLine(item.Key + ": " + item.Value);
}


답변

질문은 이해하기가 약간 까다 롭지 만 문제는 키를 반복하는 동안 사전에서 요소를 제거하려고한다는 것입니다. 이 경우 두 번째 배열을 사용하는 것 외에는 선택의 여지가 없다고 생각합니다.

ArrayList lList = new ArrayList(lDict.Keys);
foreach (object lKey in lList)
{
  if (<your condition here>)
  {
    lDict.Remove(lKey);
  }
}

ArrayList 대신 일반 목록과 사전을 사용할 수 있다면 위와 같이 작동합니다.


답변

이 모든 복잡한 답변을 믿을 수 없습니다. 키가 문자열 유형이라고 가정합니다 (또는 게으른 개발자 인 경우 ‘var’을 사용하십시오).

List<string> listOfKeys = theCollection.Keys.ToList();


답변

또는 이렇게 :

List< KeyValuePair< string, int > > theList =
    new List< KeyValuePair< string,int > >(this.yourDictionary);

for ( int i = 0; i < theList.Count; i++)
{ 
  // the key
  Console.WriteLine(theList[i].Key);
}