将LogRecordSet传递给方法

时间:2014-07-31 08:59:34

标签: c# logparser

我有一个用C#编写的小命令行应用程序,它使用LogParser,我希望将它清理一下,因为它只是一个庞大的方法。

我运行查询并得到一个LogRecordSet对象:

// run the query against wowza log
LogRecordSet logSet = logQuery.Execute(sql, new W3CInputFormat());

一切都好。现在我想将logSet传递给一个方法,我将评估所有内容:

private static IEnumerable<Unprocessed> CreateRecords(LogRecordSet logRecordset)
{
    for (; !logRecordset.atEnd(); logRecordset.moveNext())
    {
        ...
    }
}

我称之为:

var records = CreateRecords(logSet);

这个编译很好,但它只是忽略了CreateRecords方法,只是跳过它。我承认对c#命令行应用程序知之甚少,但我只是想知道为什么会发生这种情况,并且不确定要google什么。

修改 我已经研究了一下,问题似乎源于我的方法使用

yield return log;

我可以在这种情况下不使用收益率回报吗?

private static IEnumerable<Unprocessed> CreateRecords(LogRecordSet logRecordset)
{
    for (; !logRecordset.atEnd(); logRecordset.moveNext())
    {
        yield return ...;
    }
}

1 个答案:

答案 0 :(得分:1)

你的CreateRecords()看起来没问题,只要确保你开始枚举它返回的IEnumerable,你就会看到它被调用。例如:

var foo = CreateRecords().ToArray();