从嵌套集合中收集不同的键值列表?

时间:2011-10-30 14:02:30

标签: c# linq

这似乎完全是直截了当的,但是今天早上我的大脑工作得不好,我似乎无法找到一个很好的搜索表达式。

我有一个IList<IDictionary<string, string>>,我希望在我的字典对象集合中获得一个包含不同键名称的明确列表的IList<string>。什么是快速而优雅的方式来做到这一点?我确定答案很简单,我想不出来。

2 个答案:

答案 0 :(得分:3)

var allKeys = from dict in list
              from key in dict.Keys
              select key;

var distinctKeys = allKeys.Distinct().ToList();

或者如果您更喜欢lambda语法:

var distinctKeys = list.SelectMany(dict => dict.Keys).Distinct().ToList();

答案 1 :(得分:2)

list.SelectMany(d => d.Keys).Distinct()