我发现了如何“动态”添加where子句到linq查询的例子,但我不知道如何使它适用于我的特定查询。添加where子句linq查询
这是one example和here's another。现在,这里的一看查询,我有:
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;
}
'所以当我尝试和延伸where子句,这不是”我不知道我想要做什么的领域我可以在哪里做1)你能显示你尝试的确切代码吗? 2)你能显示你得到的确切错误吗? –
你能详细说明吗?_“但我的查询是设置定义”来源“作为EventLogEntry对象”_显示你的意思(伪代码可以阐明你的要求)。 –
@TimSchmelter检查出第一个“var result =(来自elLog中的EventLogEntry elog,其中......) – ganders