如何将List <String>转换为Dictionary <int,String>

tes*_*der 14 .net c# linq dictionary

我有List<String>,我需要将它转换为Dictionary<int,String>自动生成Key,是否有任何最短的方法来完成它?我试过了:

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

但我认为这是肮脏的方式.

L.B*_*L.B 54

var dict = list.Select((s, i) => new { s, i }).ToDictionary(x => x.i, x => x.s);
Run Code Online (Sandbox Code Playgroud)

  • 该死的你快 (5认同)

小智 15

我发现这是最整洁的

int index = 0;
var dictionary = myList.ToDictionary(item => index++);
Run Code Online (Sandbox Code Playgroud)


Ere*_*mez 6

在我看来,你所拥有的比 Linq 方式更具可读性(而且作为奖励,它碰巧更有效):

foreach(var item in list)
    dictionary[index++] = item;
Run Code Online (Sandbox Code Playgroud)

  • @MongZhu 我不会称其为隐藏或沉默。当我们说“dict[key1] = value1”时,如果“key1”已经存在,则该元素将被覆盖。如果不存在,将创建一个新元素。这就是字典通常的工作方式,并且有[记录](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.dictionary-2.item?view=net-6.0)。在本例中,字典是一个新的空实例,因此不存在现有的键。 (2认同)