这段代码是否延迟事件日志的检索,直到查询完它们
本文关键字:检索 查询 日志 段代码 代码 事件 延迟 是否 | 更新日期: 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;