3 回答

TA貢獻1884條經驗 獲得超4個贊
如果您只想過濾通過特定條件的情況,請執行以下操作
var logs = from log in context.Logs
select log;
if (filterBySeverity)
logs = logs.Where(p => p.Severity == severity);
if (filterByUser)
logs = logs.Where(p => p.User == user);
這樣,您的表達式樹將完全符合您的要求。這樣,創建的SQL正是您所需要的,而且僅此而已。

TA貢獻1847條經驗 獲得超7個贊
我使用了類似于達人的答案,但是有了一個IQueryable接口:
IQueryable<Log> matches = m_Locator.Logs;
// Users filter
if (usersFilter)
matches = matches.Where(l => l.UserName == comboBoxUsers.Text);
// Severity filter
if (severityFilter)
matches = matches.Where(l => l.Severity == comboBoxSeverity.Text);
Logs = (from log in matches
orderby log.EventTime descending
select log).ToList();
這將在命中數據庫之前建立查詢。該命令直到.ToList()最后才運行。
- 3 回答
- 0 關注
- 454 瀏覽
添加回答
舉報