[英]How can i add a condition string to an sql query in an var type
我正在使用 VAR 類型的 sql 查詢的源代碼,例如
var query = select ... from ... where ... ;
是否可以添加一個動態的“where子句”,例如
string condition = "where x.x > x.y";
e.g. var query = select ... from ... + condition;
我很抱歉我的英語不好
您沒有明確說明查詢的外觀。 它是LINQ操作的結果還是僅僅是String?
關鍵字var僅在設計時可用。 編譯器將用正確的數據類型替換它。
如果您的SQL查詢是字符串,例如
var query = "Select ... from ... where ..";
然后
string condition = "where x.x > x.y";
query += condition;
有效,因為兩個變量都是字符串。 您不能按照代碼建議的方式將非字符串類型與字符串組合在一起。
現在,我假設您正在使用LINQ語法。 可以將每個代碼的條件添加到linq查詢中,我認為關鍵字linq查詢構建器,表達式樹和謂詞應該可以幫助您入門。
我強烈建議您停止使用var關鍵字,而不必完全知道它的作用以及在何處使用它。
動態Linq專門用於解決LINQ的后期情況:
允許以下結構:
NorthwindDataContext northwind = new NorthwindDataContext();
var query = northwind.Products
.Where("CategoryID = 3 AND UnitPrice > 3")
.OrderBy("SupplierID");
如果不調用ToList()
並且最終映射到 DTO 類型,則可以像 go 一樣添加 Where 子句,並在最后構建結果:
var query = from u in DataContext.Users
where u.Division == strUserDiv
&& u.Age > 18
&& u.Height > strHeightinFeet
select u;
if (useAge)
query = query.Where(u => u.Age > age);
if (useHeight)
query = query.Where(u => u.Height > strHeightinFeet);
// Build the results at the end
var results = query.Select(u => new DTO_UserMaster
{
Prop1 = u.Name,
}).ToList();
這仍然只會導致對數據庫的一次調用,這將與一次性編寫查詢一樣有效。
我在這里看到了Reed Copsey的這個答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.