2012-07-06 128 views
6

我只是工作的一个卡塔我的午餐和我来脱胶......LINQ - 转弯列表<string>到词典<字符串,字符串>

这里的我想要的步骤如下:

  • 给定输入串,由下式给出的先前步骤的字符串数组结果的新行字符
  • 分割字符串,跳过第一元件阵列
  • 给定来自先前生成的字符串的集合中的步骤,创建一个包含每2个e的集合lements

在这最后的陈述我的意思是,给定的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

嗯,你可以使用(未​​经测试):

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>,开始时,你可以仅仅通过索引访问对,但这是无聊 ...

+0

正是我一直在寻找!我不知道拉链 - 感谢。 – 2012-07-06 12:49:04

相关问题