사전을 C #의 목록 컬렉션으로 변환


93

사전을 목록으로 변환하려고 할 때 문제가 있습니다.

예를 들어 템플릿 문자열을 키로, 문자열을 값으로 사용하는 사전이 있습니다. 그런 다음 사전 키를 문자열로 목록 컬렉션으로 변환하고 싶습니다.

Dictionary<string, string> dicNumber = new Dictionary<string, string>();
List<string> listNumber = new List<string>();

dicNumber.Add("1", "First");
dicNumber.Add("2", "Second");
dicNumber.Add("3", "Third");

// So the code may something look like this
//listNumber = dicNumber.Select(??????);

5
사전에서 키 목록을 요청하고 있습니까? 그렇다면 사전에 키 속성이 있습니다.
Brian Rasmussen

답변:


175

키를 자체 목록으로 변환하려면 :

listNumber = dicNumber.Select(kvp => kvp.Key).ToList();

또는 길이를 줄이고 select를 사용하여 귀찮게하지 않아도됩니다.

listNumber = dicNumber.Keys.ToList();

@Brian-편집에 들어가고있었습니다. OP가 요청한 것이기 때문에 먼저 select 방법을 보여준 다음 대안을 보여주고 싶었습니다. :-)
Justin Niessner

그래서 생각해서 댓글을 삭제했습니다.
Brian Rasmussen

1
이것은 정말 도움이되었습니다. 키를 반환하기 전에 .Where (...)를 dict에 적용해야했지만 해당 메서드는 사전을 반환하지 않으므로 Keys 속성에 액세스 할 수 없습니다. 잘 작동
Martín Coll

22

또는 :

var keys = new List<string>(dicNumber.Keys);

4
.NET Compact Framework 2.0 (Linq가 아님)으로 작업하는 것이 저에게 가장 적합한 옵션이었습니다.
Michael Murphy

LINQ를 사용할 수 없다면이 옵션이 가장 좋습니다.
user2000950

17

Linq를 사용하려면 다음 스 니펫을 사용할 수 있습니다.

var listNumber = dicNumber.Keys.ToList();

9

키를 변환하려면 :

List<string> listNumber = dicNumber.Keys.ToList();

그렇지 않으면 값을 변환하려는 경우 :

List<string> listNumber = dicNumber.Values.ToList();

이것은 작동하지만 예상 한 순서가 아닐 수 있습니다. 심지어 dict가 이전에 키로 정렬 된 경우에도 dict.Values는 ...
BooNonMooN


3

사전 키 컬렉션을 하나의 메서드 인수로 전달하려는 경우.

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.