2.1以前,我是能寫出這樣的代碼(使用AddWhere):查詢有條件的地方參數
這使得我可以建立很好的搜索表單,並且只能在用戶輸入表單變量搜索,我試圖用2.1以簡單的方式重現這個功能,並且無法弄清楚。有沒有人有什麼建議?
2.1以前,我是能寫出這樣的代碼(使用AddWhere):查詢有條件的地方參數
這使得我可以建立很好的搜索表單,並且只能在用戶輸入表單變量搜索,我試圖用2.1以簡單的方式重現這個功能,並且無法弄清楚。有沒有人有什麼建議?
我想出的解決方案是:
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命令堆疊在一起。
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/
我很高興在這裏幫助...
哇,這很快,在這麼晚的時候。不完全是我在找什麼,因爲從來沒有一個保證的地方,你從條碼開始,但可能搜索其他值之一,所以我不希望條碼在查詢中。使用舊的AddWhere方法,您可以更加動態地使用where語句。 – 2009-04-17 06:31:12