6

我只是在午餐时间做一个卡塔,我已经解开了……

这是我要遵循的步骤:

  • 给定一个输入字符串,用换行符分割字符串
  • 给定上一步的字符串数组结果,跳过数组中的第一个元素
  • 给定上一步产生的字符串集合,创建一个由每 2 个元素组成的集合

在最后一个语句中,我的意思是,给定 4 个字符串的集合:

{
    "string1",
    "string2",
    "string3",
    "string4"
}

我最终应该得到这个对集合(“元组”是正确的术语吗?):

{
    { "string1","string2" },
    { "string3","string4" }
}

我开始查看 ToDictionary,然后转到选择匿名类型,但我不确定如何说“将接下来的两个字符串作为一对返回”。

在撰写本文时,我的代码与此类似:

public void myMethod() {

    var splitInputString = input.Split('\n');

    var dic = splitInputString.Skip(1).Select( /* each two elements */ );
}

为帮助干杯!

詹姆士

4

1 回答 1

4

好吧,您可以使用(未​​经测试):

var dic = splitInputStream.Zip(splitInputStream.Skip(1),
                               (key, value) => new { key, value })
                          .Where((pair, index) => index % 2 == 0)
                          .ToDictionary(pair => pair.key, pair => pair.value);

Zip部分将结束:

{ "string1", "string2" }
{ "string2", "string3" }
{ "string3", "string4" }

...并且Where使用索引的对将跳过所有其他条目(这将是“带有下一个键的值”)。

当然,如果你真的知道你有一个List<string>开始,你可以通过索引访问这些对,但这很无聊......

于 2012-07-06T12:44:13.703 回答