不使用c#中的循环打印出Hashtable

时间:2013-10-23 14:59:25

标签: c# hashtable tracing

我需要在HashTable文件中打印出来。

是否可以在没有for / foreach循环的情况下执行此操作?类似的东西:

 Hashtable myHash;

 Logging.traceMessage(Datetime.now, myhash) // I want to have just a single datatime entry in my traceMessage.

我的预期输出类似于:

  

'散列表'

     

[KEY] - [VALUE]

     比萨饼 - 一个

     客户 - 三个

     

'跟踪文件'

     

日期时间:比萨饼 - 一个,顾客 - 三个

如果我使用foreach循环打印出哈希值,我将在每个键和值对中获得一个日期时间。

2 个答案:

答案 0 :(得分:1)

你需要在某个时候迭代列表 - 但为了你的目的,下面的扩展方法可能有帮助

在库中定义Extension方法(比如myExtensions)

public static string EntriesCSV(this Hashtable ht) 
{
string ls_return; 
foreach (var pair in ht)
ls_return += String.Format("{0}={1};\r\n", pair.Key, pair.Value); //this is very simple statement, but you can improve this to fit your needs
return ls_return;

}

参考您的扩展程序库

using myExtensions;

享受简单代码:)

Hashtable myHash;
Logging.traceMessage(Datetime.now, myhash.EntriesCSV());

希望这有帮助

答案 1 :(得分:1)

我会推荐以下内容。它应该根据您的需求进行相当优化。

Hashtable mhash = new Hashtable();

var sb = new StringBuilder();

foreach (var myhash in mhash)
{
    sb.AppendLine(myhash.ToString()); -- Note you format your hash however you want here
}

Logging.traceMessage(DateTime.Now, sb.ToString());