5

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

我的源数据有这种形式:

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

...

var uniqueKeyNames = sourceData.SomeLinqCodeHere....

非常感谢

4

2 回答 2

14

听起来您只需要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();
于 2013-08-29T14:45:46.950 回答
2

试试这个:

var uniqueKeyNames = sourceData.SelectMany(l => l).Select(kv => kv.Key).Distinct();
于 2013-08-29T14:47:17.050 回答