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

lek*_*kso 5 c# linq distinct-values

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

我的源数据有以下形式:

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

...

var uniqueKeyNames = sourceData.SomeLinqCodeHere....
Run Code Online (Sandbox Code Playgroud)

非常感谢

Jon*_*eet 14

听起来你只需要一个组合SelectMany,SelectDistinct:

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

请注意,如果您想要allKeys多次迭代,您可能希望实现查询,例如通过最后调用ToList:

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