使用Linq列出带有新生成密钥的ToDictionary

时间:2013-01-07 13:01:05

标签: linq dictionary

我有一个对象列表,我希望将其转换为带有新索引键的字典。这是一个简单的例子:

原件:
“阿尔法”
“测试版”
“查理”

我想:
1,“alpha”
2,“beta”
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吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Select的重载来获取索引。

var v = slist.Select((s,i) => new {s, i})
             .ToDictionary(x => x.i + 1,  x => x.s);

答案 1 :(得分:0)

var v = slist.ToDictionary(s => slist.IndexOf(s) + 1);