使用LINQ将字符串拆分为哈希表

时间:2012-01-23 11:51:29

标签: c# vb.net linq

我有:

string s = "A=1,B=2,C=3";

我需要使用LINQ在哈希表中输出。

Hastable应填写为

["A"] | 1

["B"] | 2

["C"] | 3

2 个答案:

答案 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);