6

昼食時にカタの作業をしているところですが、動けなくなってしまいました...

これが私が従おうとしているステップです:

  • 入力文字列を指定して、文字列を改行文字で分割します
  • 前の手順の文字列配列の結果を前提として、配列の最初の要素をスキップします
  • 前の手順で得られた文字列のコレクションを前提として、2つの要素ごとに構成されるコレクションを作成します

その最後のステートメントで私が意味するのは、この4つの文字列のコレクションを考えると次のとおりです。

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

私はこのペアのコレクションで終わる必要があります(「タプル」は正しい用語ですか?):

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

ToDictionaryを調べ始めてから、匿名タイプの選択に移りましたが、「次の2つの文字列をペアとして返す」と言う方法がわかりません。

私のコードは、執筆時点では次のようになっています。

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 に答える