Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将两个数组合并为一个双字C#_C#_Arrays_Dictionary - Fatal编程技术网

将两个数组合并为一个双字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]