2013-07-11 196 views
2

我有Dictionary<Position, List<GameObject>>,我想创建新的词典Dictionary<Position, List<Person>>,它收集包括至少一个人在List<GameObject>中的位置。使用LINQ到词典的新词典

我想:

Dictionary<Position, List<Person>> persons = 
    positions.ToDictionary(
     i => i.Key, 
     i => i.Value.Where(obj => obj is Person)) 

positions是第一部字典。

但它并不真正的工作,因为位置有时为空,它不是真的类型Person因为你不转换它。无论如何,你有什么想法吗?

回答

6
var people = positions.Select(x => new { x.Key, Values = x.Value.OfType<Person>().ToList() }) 
         .Where(x => x.Values.Any()) 
         .ToDictionary(x => x.Key, x => x.Values) 
+1

人的复数是人,除此之外+1 – Jodrell