将LogRecordSet传递到方法中
本文关键字:方法 LogRecordSet | 更新日期: 2023-09-27 18:15:42
我有一个用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#命令行应用程序知之甚少,但我只是想知道为什么会发生这种情况,并且不确定该谷歌什么。
编辑我又调查了一下,问题似乎是由于我的方法使用了
yield return log;
在这个上下文中我可以不使用yield return吗?
private static IEnumerable<Unprocessed> CreateRecords(LogRecordSet logRecordset)
{
for (; !logRecordset.atEnd(); logRecordset.moveNext())
{
yield return ...;
}
}
你的CreateRecords()
看起来很好,只要确保你开始枚举它返回的IEnumerable,你会看到它会被调用。例如:
var foo = CreateRecords().ToArray();