【发布时间】:2016-03-18 02:56:07
【问题描述】:
我在 orderby linq 表达式中使用动态参数时遇到问题
-
SearchExp函数
public Expression<Func<EmailAflAwmMessageDM, bool>> SearchXpr(string param, string q) { if (param == "to") return e => e.to_msg.Contains(q); else if (param == "from") return e => e.from_msg.Contains(q); else if (param == "cc") return e => e.cc_msg.Contains(q); else if (param == "bcc") return e => e.bcc_msg.Contains(q); else if (param == "subject") return e => e.subject.Contains(q); else return e => e.body_text.Contains(q); } -
filterExp函数
public Expression<Func<EmailAflAwmMessageDM, bool>> FiltertXpr(string filter, string value) { if (filter == "attachments") return e => e.attachments == value; else if (filter == "flagged") return e => e.flagged == value; else return e => e.seen == value; } -
IQueryable 函数
private IQueryable SearchFilter(string param,string q,string filter, string value,string sort,string dir) { var searchXpr = SearchXpr(param, q); var filterXpr = FiltertXpr(filter, value); var emailmessage = db.EmailAflAwmMessage. Where(filterXpr).Where(searchXpr) .OrderByDescending(a => a.msg_date).Select(a => new { a.subject, a.msg_date, }); return emailmessage; }
上面的代码可以工作,但我需要OrderBy 以动态方式。
因为我有 2 个参数 sort(表示其参数名称)和 dir(表示升序或降序)就像我想要 orderby(参数名称)dir
请帮助我,感谢您宝贵的时间和建议,并建议我用简单的方法替代。谢谢。
【问题讨论】:
标签: c# linq linq-to-sql entity-framework-6 iqueryable