我試圖將一些直接構建SQL查詢的舊代碼轉換爲實體框架,並且遇到了很多似乎都存在的問題(從大量問題主題):如何在linq中表達動態條件。Linq-to-Entities查詢中的動態條件
我怎麼能表達對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.Where(X => x.status < 0)' –