我找到了如何“动态”向 linq 查询添加更多 where 子句的示例,但我不确定如何使其适用于我的特定查询。
var result = (from EventLogEntry elog in el.Entries
where (elog.InstanceId == 4107)
orderby elog.TimeGenerated descending
select elog).ToList();
var query = from EventLogEntry elog in el.Entries
orderby elog.TimeGenerated descending
select elog;
第一个示例显示了硬编码InstanceID == 4107
,但我希望能够添加更多 where 子句。我见过的所有例子都说要做:
query = query.Where(el.Entries => el.Entries.Message.Contains("error"));
或类似的东西。但是我的查询设置将“源”定义为 EventLogEntry 对象,因此当我尝试扩展 where 子句时,它无法识别我想要在哪里执行的字段......
有什么帮助吗?
这是我尝试添加的内容,而智能感知无法识别其中的任何内容:
if (!String.IsNullOrEmpty(sc.Message))
query = query.Where(elog.Message.Contains(sc.Message));
更新(这是工作版本):
var query = from EventLogEntry elog in el.Entries select elog;
try
{
if (!String.IsNullOrEmpty(sc.Message))
query = query.Where(elog => elog.Message.Contains(sc.Message));
query = query.OrderBy(elog => elog.TimeGenerated);
var result = query.ToList();
}
catch
{
throw;
}