SQLクエリを直接ビルドする古いコードをEntityFrameworkに変換しようとしていますが、多くの人が抱えていると思われる問題に遭遇しました(そのトピックを取り巻く多数の質問から判断すると):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";
他の投稿で動的Linq拡張機能について読んだことがPredicateBuilder
ありますが、のような単純なケースは外部ライブラリがなくても解決できると思います。
.net 4.5、EF 5.0、C#を使用して、単一のケースごとに完全なlinqステートメントを作成せずに、これを「動的」な方法で実行できますか?