这段代码是否延迟事件日志的检索,直到查询完它们

本文关键字:检索 查询 日志 段代码 代码 事件 延迟 是否 | 更新日期: 2023-09-27 18:16:52

其中log是类型为EventLog的对象,此代码是否…

log.Entries.Cast<EventLogEntry>().Where(x => x.TimeGenerated == myDate).ToList();

…在检索所有日志之前以某种方式查询(我的Where lambda),以便它执行得更好?(类似于EF如何使用DB查询)或者它是否首先将整个日志拉入内存并从那里过滤?

如果是后者,使用这种方法(即传递XML并让查询执行提升)是"最好的"(即快速,更"高性能")吗?

我的措辞可能有点笨拙,我基本上是在问我提到的第一种方法对于查询是否效率低下。

这段代码是否延迟事件日志的检索,直到查询完它们

不,它不会执行得更好,因为日志。条目实现简单的IEnumerable,而不是IQueryable之类的东西(比如EF)。这意味着它不会分析您的"Where"子句表达式树,也不会在枚举之前以某种方式将其转换为事件查询。因此,您的查询大致相同:

var result = new List<EventLogEntry>();
foreach (EventLogEntry x in log.Entries) {
    if (x.TimeGenerated == myDate) {
        result.Add(x);
    }
}
return result;