簡體   English   中英

如何將條件字符串添加到 var 類型的 sql 查詢中

[英]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的后期情況:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

允許以下結構:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM