상상 목록의 필터 사전 나는>를 INT, 목록간단한 질문 :
List<String> B
및 사전 내가 < 문자열 사전을 반환 할 수있는 방법
Dictionary<String, int> A
이 Linq를 사용하여 A에서 B의 키로 필터링 했습니까?
상상 목록의 필터 사전 나는>를 INT, 목록간단한 질문 :
List<String> B
및 사전 내가 < 문자열 사전을 반환 할 수있는 방법
Dictionary<String, int> A
이 Linq를 사용하여 A에서 B의 키로 필터링 했습니까?
간단하고 ToDictionary
는 새 사전을 구축 :하지만 당신은 아이디어를 얻을 것이다. 당신이 항목이 많은 경우
var c = A.Where(pair => B.Contains(pair.Key))
.ToDictionary(pair => pair.Key, pair => pair.Value);
, 당신은 HashSet<string>
첫째을 만들 수 있습니다 : 그것은 빠르게 각 키를 테스트하는 것
var strings = new HashSet<string>(B);
var c = A.Where(pair => strings.Contains(pair.Key))
.ToDictionary(pair => pair.Key, pair => pair.Value);
합니다. 사전이 큰 경우
잘못된 컴퓨터를 사용하고 테스트 할 수 없기 때문에 머리가 아플 수 있습니다. 키/값 쌍을 필터링 할 Where
를 사용하여,
A.Where(val => B.Contains(val.Key)).ToDictionary(val => val.Key, val => val.Value);
, 당신은 A.
대신 B를 열거 할 수 있습니다var filtered = B
.Where(key => A.ContainsKey(key))
.ToDictionary(key => key, key => A[key]);
당신에게 @ 존 감사합니다! 너 너무 빨라! – Seen