c# - 在一行 LINQ 语句中使用增量键列表到字典

标签 c# linq list dictionary

我有这个列表:

var items = new List<string>() { "Hello", "I am a value", "Bye" };

我希望它将其转换为具有以下结构的字典:

var dic = new Dictionary<int, string>()
{
     { 1, "Hello" },
     { 2, "I am a value" },
     { 3, "Bye" }
};

如您所见,字典键只是增量值,但它们也应该反射(reflect)列表中每个元素的位置。

我正在寻找单行 LINQ 语句。像这样:

var dic = items.ToDictionary(i => **Specify incremental key or get element index**, i => i);

最佳答案

您可以通过使用 Enumerable.Select 的重载来做到这一点它传递元素的索引:

var dic = items.Select((val, index) => new { Index = index, Value = val})
               .ToDictionary(i => i.Index, i => i.Value);

关于c# - 在一行 LINQ 语句中使用增量键列表到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654193/

相关文章:

C# List<t>.ForEach(delegate(type t) 以及如何在迭代列表时删除项目

c# - 是否有System.Threading.SynchronizationContext.Current.PostAsync()?

C# - 将 MenuStrip 代码转换为 ToolStrip

mysql - 如何按两个 id 对 linq 查询进行分组

c# - 比较两个列表并将匹配列保存到单独的列表

python-3.x - Python从两个具有相同长度的列表中获取唯一值和最小值对

c# - 线程安全的数据库访问策略

作为函数的 C# 运算符

c# - 用相同的数字填充列表

c# - Linq to XML 创建具有唯一父元素的元素