如何解决使用C#中缺少键的列表从列表创建全套
我已经做了很多研究,但似乎找不到这个特定问题的答案;可以解决类似的问题,但是没有什么比这个更合适的。
本质上,我想做的是在列表中添加具有默认值的缺失键。我有一个具有以下结构的List
键:值
a : Apple
b : Orange
c : Mango
b : Lime
c : Lemon
a : Berry
d : Carrot
从上面的列表中,我想创建一个缺少键集中的完整集。
预期的产量
期望键:值
a : Apple
b : Orange
c : Mango
d : ""
a : ""
b : Lime
c : Lemon
d : ""
a : Berry
b : ""
c : ""
d : Carrot
是否有可能使用C#来实现此目的?
解决方法
给予
var list = new List<KeyValuePair<string,string>>
{
new KeyValuePair<string,string>("a","Apple"),new KeyValuePair<string,string>("b","Orange"),string>("c","Mango"),"Lime"),"Lemon"),"Berry"),string>("d","Carrot"),};
通过执行以下操作,我们可以轻松实现for循环。下面将获得列表中的不同键。
var distinctKeys = list
.Select(pair => pair.Key)
.Distinct()
.OrderBy(pair => pair)
.ToArray();
如果您想直接对distinctKeys
进行硬编码并节省计算唯一键的时间,则可以执行以下操作:
var distinctKeys = new[] {"a","b","c","d"};
如果需要填写键,以下循环将在给定索引处插入对。
var lastKeyIndex = -1;
for (var index = 0; index < list.Count; index++)
{
var currentKeyIndex = lastKeyIndex + 1 == distinctKeys.Length ? 0 : lastKeyIndex + 1;
var currentKey = distinctKeys[currentKeyIndex];
if (list[index].Key != currentKey)
{
list.Insert(index,string>(currentKey,string.Empty));
}
lastKeyIndex = currentKeyIndex;
}
for (var index = lastKeyIndex; index < distinctKeys.Length; index++)
{
list.Add(new KeyValuePair<string,string>(distinctKeys[index],string.Empty));
}
输出
a : Apple
b : Orange
c : Mango
d :
a :
b : Lime
c : Lemon
d :
a : Berry
b :
c :
d : Carrot
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。