如何用LINQ点语法获取字典与列表的键值对集合?
用LINQ点语法实现键值配对集合
当然可以做到,你只需要使用SelectMany的重载版本,它允许你在展开集合的同时,将原字典的键和每个值元素组合起来。
首先是你的原字典定义:
Dictionary<string, List<string>> test = new() { { "animal", ["cat", "dog"] }, { "fruit", ["banana", "apple"] } };
实现需求的LINQ代码如下:
var pairedResult = test.SelectMany( kvp => kvp.Value, (kvp, value) => (kvp.Key, value) );
这段代码逻辑很清晰:
- 第一个lambda表达式
kvp => kvp.Value指定要展开的集合(即每个字典项对应的字符串列表) - 第二个lambda表达式
(kvp, value) => (kvp.Key, value)负责将字典项的键和列表中的每个值组合成值元组
执行后,pairedResult的内容就是你想要的形式:[("animal", "cat"), ("animal", "dog"), ("fruit", "banana"), ("fruit", "apple")]
内容的提问来源于stack exchange,提问作者AppleMoose
相关产品推荐
相关产品推荐

