【发布时间】:2012-10-25 08:50:59
【问题描述】:
我正在尝试将一些直接构建 SQL 查询的旧代码转换为实体框架,并且遇到了许多似乎都有的问题(从围绕该主题的大量问题来看):如何表达动态 where 条件在 linq 中。
我如何用 linq 查询表达以下代码:
switch (status) {
case "0":
sqlwhere = " WHERE status < 0 ";
break;
case "-1":
sqlwhere = " WHERE status = -1 ";
break;
case "-100":
sqlwhere = " WHERE status = -100 ";
break;
case "1":
default:
sqlwhere = " WHERE status >= 0 ";
break;
}
if (strsearch != "")
sqlwhere += " AND desc LIKE '%" + strsearch + "%' ";
string sqlc = "SELECT top 10 * FROM c " + sqlwhere + " order by date desc";
我在其他帖子中阅读了有关 PredicateBuilder 和动态 Linq 扩展的信息,但我认为像这样的简单案例可以在没有外部库的情况下解决。
使用 .net 4.5、EF 5.0、C#,能否以“动态”方式完成,而无需为每个案例构建完整的 linq 语句?
【问题讨论】:
-
query = query.Where(x=>x.status<0)
标签: c# .net linq entity-framework dynamic