25

私は、キーの自動生成でList<String>それを変換する必要があります。それを達成するための最短の方法はありますか? Dictionary<int,String>私が試してみました:

    var dictionary = new Dictionary<int, String>();
    int index = 0;
    list.ForEach(x=>{
      definitions.Add(index, x);
      index++;
});

しかし、私はそれが汚い方法だと思います。

4

4 に答える 4

74
var dict = list.Select((s, i) => new { s, i }).ToDictionary(x => x.i, x => x.s);
于 2012-12-05T07:30:54.640 に答える
6

私の意見では、あなたが持っているものはLinqの方法よりも読みやすいです(ボーナスとして、たまたまより効率的です):

foreach(var item in list)
    dictionary[index++] = item;
于 2012-12-05T08:48:45.590 に答える
4

使用する:

var dict = list.Select((x, i) => new {x, i})
    .ToDictionary(a => a.i, a => a.x);
于 2012-12-05T07:31:24.717 に答える