반응형
사전 값을 일반 목록으로 가져 오는 방법
사전 값에서 목록을 얻고 싶지만 표시되는 것처럼 간단하지 않습니다!
여기에 코드 :
Dictionary<string, List<MyType>> myDico = GetDictionary();
List<MyType> items = ???
나는 시도한다 :
List<MyType> items = new List<MyType>(myDico.values)
하지만 작동하지 않습니다 :-(
물론 myDico.Values는 List<List<MyType>>
.
목록을 평평하게 만들고 싶다면 Linq를 사용하십시오.
var items = myDico.SelectMany (d => d.Value).ToList();
어때 :
var values = myDico.Values.ToList();
모든 목록을 Values
단일 목록으로 병합 할 수 있습니다 .
List<MyType> allItems = myDico.Values.SelectMany(c => c).ToList();
또 다른 변형 :
List<MyType> items = new List<MyType>();
items.AddRange(myDico.values);
내 OneLiner :
var MyList = new List<MyType>(MyDico.Values);
Slaks의 대답에 대해 더 나아가, 사전에있는 하나 이상의 목록이 null이면 , play safe를 System.NullReferenceException
호출 할 때 a 가 발생 ToList()
합니다.
List<MyType> allItems = myDico.Values.Where(x => x != null).SelectMany(x => x).ToList();
이것을 사용하십시오 :
List<MyType> items = new List<MyType>()
foreach(var value in myDico.Values)
items.AddRange(value);
문제는 사전의 모든 키에 값으로 인스턴스 목록이 있다는 것입니다. 다음 예제와 같이 각 키에 정확히 하나의 인스턴스가 값으로 있으면 코드가 작동합니다.
Dictionary<string, MyType> myDico = GetDictionary();
List<MyType> items = new List<MyType>(myDico.Values);
List<String> objListColor = new List<String>() { "Red", "Blue", "Green", "Yellow" };
List<String> objListDirection = new List<String>() { "East", "West", "North", "South" };
Dictionary<String, List<String>> objDicRes = new Dictionary<String, List<String>>();
objDicRes.Add("Color", objListColor);
objDicRes.Add("Direction", objListDirection);
사용할 수있는 또 다른 변형
MyType[] Temp = new MyType[myDico.Count];
myDico.Values.CopyTo(Temp, 0);
List<MyType> items = Temp.ToList();
Dictionary<string, MyType> myDico = GetDictionary();
var items = myDico.Select(d=> d.Value).ToList();
참조 URL : https://stackoverflow.com/questions/7555690/how-to-get-dictionary-values-as-a-generic-list
반응형
'programing' 카테고리의 다른 글
C #의 문자열에서 "\ r \ n"을 제거하려면 어떻게해야합니까? (0) | 2021.01.16 |
---|---|
jQuery를 사용하여 드롭 다운에서 선택한 현재 값 가져 오기 (0) | 2021.01.16 |
python 0으로 numpy 배열을 채우는 방법 (0) | 2021.01.16 |
Android에서 길게 탭할 때 컨텍스트 메뉴 비활성화 (0) | 2021.01.16 |
Android의 작업 표시 줄에서 사용할 SearchView의 기본 아이콘을 변경하는 방법은 무엇입니까? (0) | 2021.01.16 |