사전의 값이 아닌 키만 원합니다.
아직이 코드를 얻을 수 없었습니다. 다른 배열을 사용하면 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를 인식하지 못합니다
답변
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);
}