我是想将一些旧的直接构建 SQL 查询的代码转换为 Entity Framework,但却遇到了一个问题,很多人都会遇到(从围绕该主题的大量问题来看):如何在 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语句?
query = query.Where(x=>x.status<0)
- L.B