我發現瞭如何「動態」添加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