0

新しいインデックス キーを持つディクショナリに変換したいオブジェクトのリストがあります。簡単な例を次に示します。

原文:
「アルファ」
「ベータ」
「チャーリー」

欲しいもの:
1、「アルファ」
2、「ベータ」
3、「チャーリー」

私はこのようにそれを解決することができます:

void Main()
{
    var slist = new List<string>();
    slist.Add("alpha");
    slist.Add("beta");
    slist.Add("charlie");

    int i=0;
    var v = slist.ToDictionary (s => i++ );

    slist.Dump();
    v.Dump();
}

これを解決するためのより短い/よりスマートな方法はありますか? たとえば、クエリの前の行で int i = 0 を避けますか?

4

2 に答える 2

2

のオーバーロードを使用しSelectてインデックスを取得できます。

var v = slist.Select((s,i) => new {s, i})
             .ToDictionary(x => x.i + 1,  x => x.s);
于 2013-01-07T13:06:43.163 に答える
0
var v = slist.ToDictionary(s => slist.IndexOf(s) + 1);
于 2013-01-07T13:06:00.793 に答える