2009-04-17 91 views
0

2.1以前,我是能寫出這樣的代碼(使用AddWhere):查詢有條件的地方參數

​​

這使得我可以建立很好的搜索表單,並且只能在用戶輸入表單變量搜索,我試圖用2.1以簡單的方式重現這個功能,並且無法弄清楚。有沒有人有什麼建議?

回答

2

我想出的解決方案是:

SqlQuery q = new Select("syKey").From<Search>().Where("1").IsEqualTo("1"); 
if (!String.IsNullOrEmpty(barcode)) q.And("Barcode").Like("%" + barcode.Trim() + "%"); 
if (!String.IsNullOrEmpty(fromDate)) q.And("FromDate").IsGreaterThanOrEqualTo(fromDate); 
if (!String.IsNullOrEmpty(toDate)) q.And("ToDate").IsLessThanOrEqualTo(fromDate); 
if (!String.IsNullOrEmpty(department)) q.And("DeptNo").Like("%" + department.Trim() + "%"); 
if (!String.IsNullOrEmpty(series)) q.And("SeriesNo").Like("%" + series.Trim() + "%"); 
if (!String.IsNullOrEmpty(altcode)) q.And("AltCode").Like("%" + altcode.Trim() + "%"); 

注意與默認Where(「1」)。IsEqualTo(「1」)我可以動態地將「And」添加到查詢以使其工作。很高興看到AddWhere帶回來,因此您可以將WHERE命令堆疊在一起。

0
IDataReader rdr=new Select().From<Search>().Where("barcode").Like(..) 
.And("FromDate").GreaterThan(..) 
.And("ToDate").LessOrEqualTo(..) 
.And("DeptNo").Like() 
... 
.ExecuteReader(); 

http://blog.wekeroad.com/2008/01/10/subsonic-version-21-pakala-preview-the-new-query-tool/

現在,如果你喜歡冒險,你可以用3.0(這是在作品),你可以使用LINQ來做到這一點:

http://code.google.com/p/subsonicthree/

我很高興在這裏幫助...

+0

哇,這很快,在這麼晚的時候。不完全是我在找什麼,因爲從來沒有一個保證的地方,你從條碼開始,但可能搜索其他值之一,所以我不希望條碼在查詢中。使用舊的AddWhere方法,您可以更加動態地使用where語句。 – 2009-04-17 06:31:12