如何从所有哈希值中过滤掉DateTime类型的值?

时间:2009-11-13 09:07:32

标签: c# .net reflection hashtable

我需要将所有DateTime值转换为String,虽然在我的项目中,我最后的所有代码都遵循1个函数,其中我有4个不同的Hashtables(实际上是CookComputing xmlrpc库的XmlRpcStruct对象)。

有没有办法没有迭代每个哈希表 - 我可以转换哈希表的值有datetime - >字符串。

没有迭代 - 我的意思是只是为了使处理更快,但我需要为嵌套的哈希表解决它,其中key也包含另一个哈希表。

2 个答案:

答案 0 :(得分:1)

您可以在发送到该服务器之前处理您的哈希表。检查每个对象。它是否真的是一个DateTime,然后用适当格式的.ToString替换它。

public static void ProcessHT(Hashtable ht)
{
    Hashtable dates = new Hashtable();

    foreach(DictionaryEntry de in ht)
    {
        if (de.Value is DateTime)
            dates.Add(de.Key, de.Value);
    }

    foreach(DictionaryEntry de in dates)
    {
        ht.Remove(de.Key);
        ht.Add(de.Key, ((DateTime)de.Value).ToString("s"));
    }
}

public static void RunSnippet()
{
    Hashtable ht = new Hashtable();

    ht.Add("1", "one");
    ht.Add("date", DateTime.Today);
    ht.Add("num", 1);
    Print(ht);
    WL("---");
    ProcessHT(ht);
    Print(ht);
}

private static void Print(Hashtable ht)
{
    foreach (DictionaryEntry de in ht)
    {
        WL("{0} = {1}", de.Key, de.Value);
    }
}

答案 1 :(得分:0)

为什么不能将日期转换为将其添加到哈希表中的时间?

myHashTable.Add("ADate", DateTime.Now.ToString());