问题描述
||
我有一个带有一些公共属性的
classA
,并重写了Tosstring
方法来连接这些属性中的字符串。它也有一个返回int键的属性。
我在用
string str = value1 + value2 + value3;
每个值具有#0个独立的属性
string[] values = Regex.Split(str,\'#\');
foreach(classA value in values)
{
dictionary.add(value.key,value);
}
这很好
================================================== ===================
对于这种情况,我想使用
values.ToDictionary
有人可以建议如何使用吗?
解决方法
在我看来,您可能真正想要的是从类中获取属性,然后将其转换为字典中的键值对。
如果这就是您要执行的操作,则Class-> String-> Array-> Dictionary将花费很长的路要走。
如果是这种情况,也许您想尝试一种更直接的方法
给定这样的课程
class classA
{
public string Name{get;set;}
public string website { get; set; }
public string location { get; set; }
public int age { get; set; }
public int reputation { get; set; }
private string somthingPrivate { get; set; }
}
下面创建一个名为result的字典变量。
classA test = new classA() { Name = \"Jeff Atwood\",website = \"codinghorror.com/blog\",location = \"El Cerrito,CA\",age = 40,reputation = 15653 };
var result = test.GetType().GetProperties().ToDictionary(property => property.Name,property => property.GetValue(test,null),StringComparer.OrdinalIgnoreCase);
foreach (var key in result.Keys)
Console.WriteLine(\"{0} : {1}\",key,result[key]);
并输出
Name : Jeff Atwood
website : codinghorror.com/blog
location : El Cerrito,CA
age : 40
reputation : 15653
Press any key to continue . . .
,听起来您想要一些类似的东西:
Regex.Split(str,\'#\')
.Select(s => new ClassA(s))
.ToDictionary(value => value.Key);
这将采用从Split
返回的每个字符串,以某种方式将其转换为ClassA
(您的问题中缺少该部分),并返回一个字典,其中的键全部来自ClassA
实例,而值本身就是实例。