C# 使用LINQ将字符串拆分为哈希表
我有: 我需要使用LINQ在哈希表中输出 Hastable应填写为C# 使用LINQ将字符串拆分为哈希表,c#,vb.net,linq,C#,Vb.net,Linq,我有: 我需要使用LINQ在哈希表中输出 Hastable应填写为 string s = "A=1,B=2,C=3"; 您可以使用以下代码: ["A"] | 1 ["B"] | 2 ["C"] | 3 请注意,如果输入字符串的格式无效,此代码将中断。此外,它使用强类型和首选字典而不是哈希表 更新: 要避免在创建字典时拆分两次,可以使用以下代码: var dict = s.Split(',') .ToDictionary(x => x.Split('=').F
string s = "A=1,B=2,C=3";
您可以使用以下代码:
["A"] | 1
["B"] | 2
["C"] | 3
请注意,如果输入字符串的格式无效,此代码将中断。此外,它使用强类型和首选字典而不是哈希表
更新:
要避免在创建字典时拆分两次,可以使用以下代码:
var dict = s.Split(',')
.ToDictionary(x => x.Split('=').First(),
x => int.Parse(x.Split('=')[1]));
您可以拆分字符串,然后拆分每个子字符串以获得键值对:
var dict = s.Split(',')
.Select(x => x.Split('='))
.ToDictionary(x => x[0],
x => int.Parse(x[1]));
你就不能避免两次分手吗?嗯。。试图搞乱。ToDictionary想要返回一些东西,但迄今为止失败了-难道不能这样做吗?:/@阴影向导:我又更新了。请看一看。我真的不知道你说的从ToDictionary退回东西是什么意思。太好了!无视我之前的评论,我不理解.ToDictionary是如何工作的。现在看来是理想的解决方案,干杯我正要说,在拆分子字符串时,不需要创建中间对象,但我看到您已经复制了我的代码;
Dictionary<string, int> values =
s.Split(",")
.Select(x => x.Split("="))
.ToDictionary(x => x[0], x => Int32.Parse(x[1]))
HashTable pairs = new HashTable(values);