为了账号安全,请及时绑定邮箱和手机立即绑定

条件Linq查询

条件Linq查询

C#
DIEA 2019-10-09 15:35:47
我们正在研究一个日志查看器。使用时可以选择按用户,严重性等进行过滤。在Sql天内,我将添加到查询字符串中,但是我想使用Linq进行过滤。如何有条件地添加子句?
查看完整描述

3 回答

?
慕村9548890

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正是您所需要的,而且仅此而已。


查看完整回答
反对 回复 2019-10-09
?
aluckdog

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()最后才运行。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号