我正在尝试将一些直接构建 SQL 查询的旧代码转换为实体框架,并且遇到了许多似乎都有的问题(从围绕该主题的大量问题来看):如何在 linq 中表达动态 where 条件。
我如何用 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 语句?