将两个数组合并为一个双字C#
我想创建一个将两个数组合并为一个双字C#,c#,arrays,dictionary,C#,Arrays,Dictionary,我想创建一个 Dictionary dict 两个阵列(不同长度)中的一个: 结果是: ["A"] = {green} ["B"] = {blue} ["D"] = {yellow} ["C"] = {green} ["E"] = {blue} 在这种情况下,您的词典将是词典。 从您的示例中,似乎需要值数组的模数(%)运算符来处理数组长度差异 var dict = new Dictionary<string,string>(); for(int i = 0; i < key
Dictionary dict
两个阵列(不同长度)中的一个:
结果是:
["A"] = {green}
["B"] = {blue}
["D"] = {yellow}
["C"] = {green}
["E"] = {blue}
在这种情况下,您的词典将是
词典
。
从您的示例中,似乎需要值数组的模数(%)运算符来处理数组长度差异
var dict = new Dictionary<string,string>();
for(int i = 0; i < keys.Length; i++) {
var j = i % values.Length;
dict[keys[i]] = values[j];
}
var dict=newdictionary();
对于(inti=0;i
您可以尝试一个简单的Linq:
如果键
仅包含唯一的项:
// here all keys are unique
string[] keys = { "A", "B", "C", "D", "E", "F" };
string[] values = { "green", "blue", "yellow" };
Dictionary<string, string> result = Enumerable
.Range(0, keys.Length)
.ToDictionary(i => keys[i], i => values[i % values.Length]);
结果:
[A, green]
[B, blue]
[D, yellow]
[C, green]
[E, blue]
我不确定你的数据是如何准确映射的。。。您为解决此问题做了哪些努力?是不是
[“A”],{green}
A
对?看起来您并不是真正在寻找字典,而是相反:将多个条目映射到单个对象您的示例结果无法存储在字典中。您的示例结果可能是错误的,或者您需要将其更正为所需的结果类型。另外,string[]values={green,blue,yellow}
只有在green
和blue
和yellow
被预定义为string
常量或string
变量时,才是正确的语法。抱歉,但细节很重要。看起来他不想要模,因为a和C都是green@BartvanderDrift此代码按照用户的请求工作,只是他需要首先只获取唯一的键:keys=keys.Distinct().ToArray()代码>(否则代码仍然有效,但具有不同的值,因为在处理数组时重复的键会重新分配新值)。
// here all keys are unique
string[] keys = { "A", "B", "C", "D", "E", "F" };
string[] values = { "green", "blue", "yellow" };
Dictionary<string, string> result = Enumerable
.Range(0, keys.Length)
.ToDictionary(i => keys[i], i => values[i % values.Length]);
// Note, that "A" key repeats twice
string[] keys = { "A", "B", "A", "D", "C", "E" };
string[] values = { "green", "blue", "yellow" };
Dictionary<string, string> result = keys
.Distinct()
.Select((key, i) => new {
key,
value = values[i % values.Length]
})
.ToDictionary(item => item.key, item => item.value);
Console.Write(string.Join(Environment.NewLine, result));
[A, green]
[B, blue]
[D, yellow]
[C, green]
[E, blue]