0

我正在尝试使用filehelpers类生成器,但我对如何处理它有点困惑。

       var cb = new DelimitedClassBuilder("temp", ",") { IgnoreFirstLines = 0, IgnoreEmptyLines = true, Delimiter = ","  };
        var sr = new StreamReader(stream);
        var headerArray = sr.ReadLine().Split(',');
        foreach (var header in headerArray)
        {
            var fieldName = header.Replace("\"", "").Replace(" ", "");
            cb.AddField(fieldName, typeof(string));
        }

        var engine = new FileHelperEngine(cb.CreateRecordClass());
        var result = engine.ReadStream(sr);

DelimitedClassBuilder的第一个参数是“className”,然后是“delimiter”

    //
    // Summary:
    //     Creates a new DelimitedClassBuilder.
    //
    // Parameters:
    //   className:
    //     The valid class name.
    //
    //   delimiter:
    //     The delimiter for that class.
    public DelimitedClassBuilder(string className, string delimiter);

然后,我浏览流的第一行,其中包含我稍后将用作此“类”的字段名称的标题。

最后一行读取所有其余信息并将其作为对象数组 [] 返回。我在里面看到它们属于“临时”类。

但是我不知道如何将其实际转换为“temp”类。现在我真的不知道如何获取数据。我知道我不能只做类似的事情

result[0].SomeFieldName 作为 fieldName 可能会随着运行而变化。所以这也让我想知道,如果我必须做一些事情,比如通过索引或其他东西获取它,为什么它首先会创建一个类。

如您所见,我现在很困惑。

4

1 回答 1

0

示例中演示了最简单的方法。

你用

DataTable dt = engine.ReadStreamAsDT(sr);

然后通过以下方式访问结果:

foreach (DataRow row in dt.Rows) // Loop over the rows.
{
    Console.WriteLine("--- Row ---"); // Print separator.
    foreach (var item in row.ItemArray) // Loop over the columns.
    {
        Console.Write("Item: "); // Print label.
        Console.WriteLine(item); 
        /// the Type of item will be whatever you defined when you
        /// called ClassBuilder.AddField() (String in your example)
    }
}
Console.ReadLine();
于 2012-02-09T15:29:05.127 回答