如何从Regex.Split </int>获取Dictionary <in,=“”class =“”>

时间:2011-05-26 19:15:59

标签: c# .net

我有classA有一些公共财产&amp;覆盖TosString方法以连接这些属性中的字符串。它还有一个返回int key的属性;

我正在使用

string str = value1 + value2 + value3; 

每个值都具有classA

的#个分隔属性
string[] values = Regex.Split(str,'#');

foreach(classA value in values)
{
    dictionary.add(value.key, value);
}

这很好用

=============================================== ======================

对于这种情况,我想使用

values.ToDictionary

任何人都可以建议如何使用它吗?

2 个答案:

答案 0 :(得分:2)

听起来你想要的东西是:

Regex.Split(str,'#')
.Select(s => new ClassA(s))
.ToDictionary(value => value.Key);

这将获取从Split返回的每个字符串,以某种方式将其转换为ClassA(您的问题中缺少该部分),并返回一个字典,其中所有键都来自{ {1}}实例和值是实例本身。

答案 1 :(得分:1)

我觉得你可能真正想要的是从类中获取属性并将它们转换为字典中的键值对。

如果那是你想要做的事,那么Class - &gt;字符串 - &gt;数组 - &gt;字典正在走很长的路。

如果是这种情况,也许你想尝试更直接的方法

鉴于此类

 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 . . .