我有一个KeyValuePairs列表列表,我想将其带到标准表单并进一步将其导出为表格。为此,我需要获取列表中的所有唯一键。如何使用LINQ获取唯一键?
我的源数据有以下形式:
var sourceData = new List<List<KeyValuePair<string, string>>>();
...
var uniqueKeyNames = sourceData.SomeLinqCodeHere....
非常感谢
答案 0 :(得分: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();
答案 1 :(得分:2)
试试这个:
var uniqueKeyNames = sourceData.SelectMany(l => l).Select(kv => kv.Key).Distinct();