我有一个类型字符串数组,如下所示:
"test1|True,test2|False,test3|False,test4|True".这本质上是一个二维数组,如此[test1] [True] [test2] [False] [test3] [False] [test4] [True].
我想将其转换为dictionary<string,bool>使用linq,例如:
Dictionary<string, bool> myResults = results.Split(",".ToCharArray).ToDictionary()
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
var d = results.Split(',')
.Select(row => row.Split('|'))
.ToDictionary(srow => srow[0], srow => bool.Parse(srow[1]));
Run Code Online (Sandbox Code Playgroud)
首先将您的字符串转换为正确的数组:
String sData = "test1|True,test2|False,test3|False,test4|True";
String[] sDataArray = sData.Split(',');
Run Code Online (Sandbox Code Playgroud)
然后你可以处理String[]成字典:
var sDict = sDataArray.ToDictionary(
sKey => sKey.Split('|')[0],
sElement => bool.Parse(sElement.Split('|')[1])
);
Run Code Online (Sandbox Code Playgroud)
该ToDictionary方法需要2个功能,其提取从每个源数组元素中的键和元素数据.
在这里,我通过拆分"|"来提取每一半 然后使用前半部分作为键,第二部分我将其解析为a bool用作元素.
显然,这不包含错误检查,因此如果源字符串不是逗号分隔,或者每个元素都不是管道分隔的,则可能会失败.所以要小心源字符串的来源.如果它与这种模式完全匹配则会失败,因此您需要进行一些测试和验证.
Marcelo的回答是类似的,但我认为它更优雅.
| 归档时间: |
|
| 查看次数: |
5306 次 |
| 最近记录: |