4
A
回答
12
var foo = dictionary
.Where(f => f.Value.Count > 0)
.ToDictionary(x => x.Key, x => x.Value);
这将创建一个新的字典。如果你想在原地移除,乔恩的答案将会成功。
10
好吧,如果你需要就地执行此操作,您可以使用:
var badKeys = dictionary.Where(pair => pair.Value.Count == 0)
.Select(pair => pair.Key)
.ToList();
foreach (var badKey in badKeys)
{
dictionary.Remove(badKey);
}
或者,如果你很高兴创造了新字典:
var noEmptyValues = dictionary.Where(pair => pair.Value.Count > 0)
.ToDictionary(pair => pair.Key, pair => pair.Value);
请注意,如果您有机会改变字典的构建方式,则可以考虑通过ToLookup
方法创建ILookup
。这通常比字典中的每个值都是列表简单,即使它们在概念上非常相似。查找具有很好的功能,如果您要求缺席密钥,您会得到一个空序列,而不是一个例外或空引用。
0
替代方案仅供参考。
或者(并且完全取决于您的使用情况),请在修改列表内容时立即修改列表内容,而不是在特定时间点批量修改列表内容。在这样的时刻很可能你会知道的关键,而不必重复:
var list = dictionary[0];
// Do stuff with the list.
if (list.Count == 0)
{
dictionary.Remove(0);
}
其他的答案解决需要做的ad-hoc在整个字典。
相关问题
- 1. Python - 从字典列表中删除具有空值的字典
- 2. 从嵌套字典中删除项目
- 3. 从字典中随机删除项目
- 4. Groovy中删除从列表空项
- 5. 删除列表或字典中的重复项目
- 6. 从列表中删除项目不从RecyclerView中删除它们?
- 7. 列表中删除项目
- 8. Android Firebase从列表中删除项目
- 9. 从列表视图中删除项目
- 10. Python从列表中删除项目
- 11. Sharepoint REST - 从列表中删除项目
- 12. 从链接列表中删除项目
- 13. 从列表C#中删除项目#
- 14. 从列表中删除项目
- 15. WPF从列表框中删除项目
- 16. 从weak_ptrs列表中删除项目
- 17. 从下拉列表中删除项目
- 18. 从列表中删除项目c#
- 19. Python - 从列表中删除项目
- 20. 从列表框中删除项目
- 21. 从列表视图中删除项目
- 22. 从通用列表中删除项目
- 23. 从列表中删除项目Ionic
- 24. 如何从列表中删除项目
- 25. 从常规列表中删除项目
- 26. 从列表中删除项目(.net 2.0)
- 27. 无法从列表中删除项目?
- 28. 从列表框中删除项目?
- 29. 从列表元素中删除项目?
- 30. 从列表中删除项目
@ClaudioRedi - 谢谢,我刚刚注意到这个错误。 :) – 2013-05-02 14:40:45
我会改变'f.Value.Count> 0'到'f.Value.Any()' – bnu 2017-02-02 13:45:52