从LINQ中选择KeyValuePairs列表列表中的所有键

时间:2013-08-29 14:43:41

标签: c# linq distinct-values

我有一个KeyValuePairs列表列表,我想将其带到标准表单并进一步将其导出为表格。为此,我需要获取列表中的所有唯一键。如何使用LINQ获取唯一键?

我的源数据有以下形式:

var sourceData = new List<List<KeyValuePair<string, string>>>();

...

var uniqueKeyNames = sourceData.SomeLinqCodeHere....

非常感谢

2 个答案:

答案 0 :(得分:14)

听起来您只需要SelectManySelectDistinct的组合:

var allKeys = sourceData.SelectMany(list => list) // Flatten to a sequence of KVP
                        .Select(kvp => kvp.Key)   // Select just the keys
                        .Distinct();

请注意,如果您想多次迭代allKeys,您可能希望实现查询,例如:最后致电ToList

var allKeys = sourceData.SelectMany(list => list) // Flatten to a sequence of KVP
                        .Select(kvp => kvp.Key)   // Select just the keys
                        .Distinct()
                        .ToList();

答案 1 :(得分:2)

试试这个:

var uniqueKeyNames = sourceData.SelectMany(l => l).Select(kv => kv.Key).Distinct();