Csharp/C#教程:如何在字典中统一两个数组?分享


如何在字典中统一两个数组?

如果你有两个数组string[] aint[] b怎样才能最有效地获得Dictionary并且代码最少? 假设它们包含相同数量的元素。

例如,这是最好的方法吗?

 Dictionary vals = new Dictionary(); for(int i = 0; i < size; i++) { vals.Add(a[i],b[i]); } 

如果您的目标是匹配序列中的位置,则可以使用Enumerable.Zip

 int[] myInts = { 1, 2 }; string[] myStrings = { "foo", "bar"}; var dictionary = myStrings.Zip(myInts, (s, i) => new { s, i }) .ToDictionary(item => item.s, item => item.i); 

因为你正在使用数组,所以写“longhand”并不是那么久。 但是,您希望事先validation数组的长度是否相等。

 var dictionary = new Dictionary(); for (int index = 0; index < myInts.Length; index++) { dictionary.Add(myStrings[index], myInts[index]); } 

通常,Linq可以产生更具表现力,更易于理解的代码。 在这种情况下,可以说相反的是正确的。

如果这是.Net 4,那么您可以执行以下操作:

 var result = a.Zip(b, (first, second) => new {first, second}) .ToDictionary(val => val.first, val => val.second); 

没有Zip,你也可以这样做:

 var result = Enumerable.Range(0, a.Length).ToDictionary(i => a[i], i => b[i]); 

使用ToDictionary:

上述就是C#学习教程:如何在字典中统一两个数组?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

  int idx = 0; var dict = b.ToDictionary(d => a[idx++]); 

 var result = a.ToDictionary(x => x, x => b[a.IndexOf(x)]); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/949390.html

(0)
上一篇 2021年11月17日
下一篇 2021年11月17日

精彩推荐