c# - 加入两个列表创建 KeyValuePair 列表
问题描述
我有一份清单List<KeyValuePair<string,string>>
var results = new List <KeyValuePair<string, string>>();
我还有两个字符串列表:
var position= new List<string>{ "first", "second", "third" };
var name = new List<string>{ "John", "Diana", "Matthew", "Lisa", "James"};
这两个列表的大小可以不同,只是添加一个空字符串。
我想将它们合并在一起以创建一个新的results
. 我目前正在使用这个:
results = position.Zip(name, (x, y) => new KeyValuePair<string, string>(x, y)).ToList();
如果只有两个列表的大小相同,这将起作用。但是,如果不是,它会修剪name
列表以匹配position
列表。所以并不是所有的价值观都在那里。
我需要实现以下
first,John
second,Diana
third, Matthew
, Lisa
, Jame
这两个列表在任何时候都可以是可变大小的,而不是固定的。所以有时name
可以大于position
,反之亦然。
我见过 wereSelectMany
被使用,但不知道如何将它结合到我的Zip
. 有什么想法或建议吗?
解决方案
我会增加名称列表的长度以匹配位置元素的数量,并根据需要添加空字符串。
position.Zip(name.Concat(Enumerable.Repeat(string.Empty, Math.Max(0, position.Count - name.Count))), (x, y) => ...
推荐阅读
- objective-c - 如何使用objective-c向接口公开自定义初始化实现?
- java - Headless chrome 删除输入值 - 日期时间字段
- python - Tkinter 获取坐标的平均值
- angularjs - AngularJs:ui-router *需要*我将 $scope 注入我的控制器(即使使用 Controller As 语法)?
- python - 在 RHEL 7 中使用 Python 和 PIP 安装 Ansible 离线安装时遇到 zlib 不可用错误
- objective-c - 问题 NSTemporaryDirectory Objective-C,缺少信息?
- sql-server - 从一天内只有 2 个状态的表中获取数据
- reactjs - 如何使用 React.js 在 Botframework v4 聊天应用程序中执行发送“打字指示器”?
- git - 看不到在 GIT 上创建的新分支
- deep-learning - 输入形状为 [?,148,1,32] 的“max_pooling2d_52/MaxPool”(操作:“MaxPool”)从 1 中减去 2 导致的负尺寸大小