如何从Regex.Split中获取Dictionary <int,ClassA>

问题描述

|| 我有一个带有一些公共属性
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
实例,而值本身就是实例。