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 关注
- 438 浏览
添加回答
举报