我有:
string s = "A=1,B=2,C=3";
我需要使用LINQ在哈希表中输出。
Hastable应填写为
["A"] | 1
["B"] | 2
["C"] | 3
答案 0 :(得分:6)
您可以使用此代码:
var dict = s.Split(',')
.ToDictionary(x => x.Split('=').First(),
x => int.Parse(x.Split('=')[1]));
请注意,如果输入字符串的格式不正确,则此代码会中断。此外,它使用强类型和首选Dictionary<TKey, TValue>
代替Hashtable
。
更新:
为避免在创建字典时拆分两次,您可以使用以下代码:
var dict = s.Split(',')
.Select(x => x.Split('='))
.ToDictionary(x => x[0],
x => int.Parse(x[1]));
答案 1 :(得分:2)
您可以拆分字符串,然后拆分每个子字符串以获取键值对:
Dictionary<string, int> values =
s.Split(",")
.Select(x => x.Split("="))
.ToDictionary(x => x[0], x => Int32.Parse(x[1]))
这会返回Dictionary<T,T>
而不是HashTable
,这实际上是过时的。如果确实需要,您可以从HashTable
创建Dictionary
:
HashTable pairs = new HashTable(values);