Array KeyArr = {"Key1","Key2","Key3"}
Array ValArr = {"Value1","Value2","Value3"}
以下是我期待的关键值对列表
{Key1,Value1}
{Key2,Value1} , {Key2,Value2}
{Key3,Value1} , {Key3,Value2} , {Key3,Value3}
我可以使用for循环语句实现它,但是 我只是想知道是否已经有内置的功能来实现它 我为每个键提供数组和偏移...(为了演示目的,我使偏移量与键位置重合......)
如果没有......任何人都可以建议比下面的算法更好更聪明的算法
int Key1Offset = 1;int Key2Offset = 2;int Key3Offset = 3;
var lst = new List<KeyValuePair<string,string>>();
for(int i=0;i<KeyArr.Count;i++)
{
if(i < Key1Offset) lst.Add(new KeyvaluePair<int,int>(KeyArr(1),ValArr(i)));
if(i < Key2Offset) lst.Add(new KeyvaluePair<int,int>(KeyArr(2),ValArr(i)));
if(i < Key3Offset) lst.Add(new KeyvaluePair<int,int>(KeyArr(3),ValArr(i)));
}
在建议自定义代码之前,请尝试建议内置功能...
Atleast一个内置函数,可以创建来自2个不同集合的对,就足够了。(忘记偏移量)
答案 0 :(得分:1)
如果您真的想要所有键/值对:
var pairs =
from key in KeyArr
from value in ValArr
select new KeyValuePair<string, string>(key, value);
如果您想要样品输出:
var pairs =
from idx in Enumerable.Range(KeyArr.Count())
from value in ValArr.Take(idx + 1)
select new KeyValuePair<string, string>(KeyArr[idx], value);