2012-07-06 11 views
6

Ben sadece öğle üzerinde Kata üzerinde çalışıyorum ve suya düşmek ettik ... İşte LINQ - Sözlük içine Listesini <string> çevirmek <string, string>

adımlar Ben izlemeye çalışıyorum ediyor:

  • bir giriş dizesi göz önüne alındığında, bir önceki adımın dize dizi sonucunun Verilen yeni satır karakteri
  • tarafından dize bölmek, önceki kaynaklanan dizeleri toplanması Verilen dizinin
  • ilk elemanını atlamak adım, her 2 e oluşan bir koleksiyon oluşturmak lements
  • Ben, 4 dizeleri bu koleksiyonu verilir ne anlama geldiğini bu son açıklamada

: Ben çiftleri bu koleksiyon ile bitirmek gerekir

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

('tuples' doğru bir terimdir?):

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

sonra, ToDictionary bakmaya başladı anonim türünü seçerek doğru ilerledi ama "bir çift olarak gelecek iki dizeleri dönmek" nasıl denir bilmiyorum.

Kodum yazma anda şuna benzer: Yardım için

public void myMethod() { 

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

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

Şerefe!

James

cevap

4

Eh, (denenmemiş) kullanabilirsiniz:

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

... ve dizini kullanarak Where çifti:

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 bölüm ile sona erecek diğer her girişi atlar ("sonraki tuşla" değeri ").

+0

aradığım Tam olarak ne ... Tabii

gerçekten sen, sadece dizine göre çiftleri erişebilecek ile başlamak için List<string> var biliyorum eğer, ama bu sıkıcı var! Zip'in farkında değildim - bunun için teşekkürler. –