Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在LINQ中从KeyValuePairs列表中选择所有键_C#_Linq_Distinct Values - Fatal编程技术网

C# 在LINQ中从KeyValuePairs列表中选择所有键

C# 在LINQ中从KeyValuePairs列表中选择所有键,c#,linq,distinct-values,C#,Linq,Distinct Values,我有一个KeyValuePairs列表,我想将其转换为标准形式,并将其进一步导出为表。为此,我需要获得列表中存在的所有唯一密钥。如何使用LINQ获取唯一密钥 我的源数据具有以下格式: var sourceData = new List<List<KeyValuePair<string, string>>>(); ... var uniqueKeyNames = sourceData.SomeLinqCodeHere.... var sourceData=

我有一个KeyValuePairs列表,我想将其转换为标准形式,并将其进一步导出为表。为此,我需要获得列表中存在的所有唯一密钥。如何使用LINQ获取唯一密钥

我的源数据具有以下格式:

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

...

var uniqueKeyNames = sourceData.SomeLinqCodeHere....
var sourceData=newlist();
...
var uniqueKeyNames=sourceData.SomeLinqCodeHere。。。。

非常感谢

听起来您只需要将
SelectMany
Select
Distinct
组合起来:

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();
试试这个:

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