List<EventLog> filteredList = EventLog.GetEventLogs().Where(x => string.Equals(x.Logdisplayname,"Some Value")).Where(x => x.EntrIEs.Where(...
但显然EntrIEs.Where()不起作用,因为它不是IEnumberable.我已经考虑了几个小时的替代解决方案,但现在我没希望了.任何帮助是极大的赞赏.
解决方法EventLogEntryCollection
(查询中x.EntrIEs返回的对象类型)仅实现IEnumerable,而不是通用的IEnumerable< EventLogEntry>.要将它与linq方法一起使用,您必须转换每个元素: x => x.EntrIEs.Cast<EventLogEntry>().Where(...
Cast< T>()接受任何IEnumerable并返回IEnumerable< T>,其中每个元素简单地转换为请求的类型,如果失败则引发ClassCastException.由于EventLogEntry是此集合中唯一应该包含的对象类型,因此这是一种安全的 *** 作.
(OfType< T>()是相似的,除了它将省略不能转换为请求类型的元素而不是引发异常.在这种特殊情况下,可观察行为应该是相同的.)
总结以上是内存溢出为你收集整理的c# – 在非IEnumerable类型上使用lambda表达式过滤Windows日志全部内容,希望文章能够帮你解决c# – 在非IEnumerable类型上使用lambda表达式过滤Windows日志所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)