2012-07-06 227 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

相關問題