C# 将逗号分隔值转换为字典

C# 将逗号分隔值转换为字典,c#,asp.net,linq,C#,Asp.net,Linq,我正在尝试将逗号分隔的字符串转换为字典 string text = "abc,xyz,pqr"; 输出应为字典,键为文本中的字符串,值为从0开始的数字 我尝试了以下操作,但出现了错误: text.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).ToDictionary(split => split[0], 0))` 我也不知道如何给出增量值,所以我尝试了对字典中的所有键使用常量硬编码值,如上图所示,但它的给出也有错误

我正在尝试将逗号分隔的字符串转换为字典

string text = "abc,xyz,pqr";
输出应为
字典
,键为文本中的字符串,值为从0开始的数字

我尝试了以下操作,但出现了错误:

text.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries).ToDictionary(split => split[0], 0))`
我也不知道如何给出增量值,所以我尝试了对字典中的所有键使用常量硬编码值,如上图所示,但它的给出也有错误


任何关于所有键的常量值或使用linq的增量值的帮助都非常有用

存在通过索引的
Select()
重载:

var dict = text.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries)
    .Select((str, idx) => new { str, idx })
    .ToDictionary(x => x.str, x => x.idx);

逗号分隔值字符串中是否存在重复的可能性?如果是这样,输出到
字典
会使您容易发生异常:

已添加具有相同密钥的项。

如果重复是可能的,那么您可以考虑将A输出作为备选方案:

查找类似于。区别在于
字典
将键映射到单个值,而
查找
映射 值集合的键

这里有一个类似于中的解决方案,它利用生成
查找

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        string text = "abc,xyz,pqr,linq,xyz,abc,is,xyz,pqr,fun";

        var lookup =
            text.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries)
            .Select((str, idx) => new { str, idx })
            .ToLookup(x => x.str, x => (uint)x.idx);

        foreach (IGrouping<string, uint> itemGroup in lookup)
        {
            Console.WriteLine("Item '{0}' appears at:", itemGroup.Key);

            foreach (uint item in itemGroup)
            {
                Console.WriteLine("- {0}", item);
            }
        }
    }
}

那你就得投球了。x=>(uint)x.idx