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