Linq to Sql : 動態構造Expression進行動態查詢
前一篇在介紹動態查詢時,提到一個問題:如何根據使用者的輸入條件,動態構造這個過濾條件表示式呢?
Expression
理想情況下,我希望可以像下面這樣來構造predicate,這樣,我們就可以使用&、| 、&=、|=來任意拼接過濾條件了:
1: Expressionbool>> predicate = null;
2: predicate &= (t => t.ProductName.Contains("che")) | (t => t.UnitPrice >= 22);
但是理想與現實之間,似乎總有不可逾越的鴻溝……
前面的程式碼中,我們總是要寫一常串Expression
無奈之下,只好實現了下面的這種方式,勉強湊合用著:
1: ExpressionProductExt, bool>> predicate = null;
2: predicate = predicate.AndAlso(p => p.CompanyName.Length > 2)
3: .OrElse((Products p) => p.ProductName.Contains("che"))
4: .AndAlso((Products p) => p.UnitPrice >= 22);
運算得到的結果如下:p => (((p.CompanyName.Length > 2) || p.ProductName.Contains("che")) && (p.UnitPrice >= 22))
有了這個OrElse和AndAlso擴充套件,我們就可以對Expression
不過跟之前文章中提到的一樣,這裡有個限制:雖然我們的Expression中,第一個可以凡泛型引數可以傳任意值(譬如傳ProductExt或 Products或其他的,可以不必要求是同一種型別),但條件中用到的物件屬性(譬如CompanyName、ProductName、 UnitPrice ),必須在T中存在同名屬性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-626327/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 動態SQL——構造通用動態頁面查詢SQL
- linq to sql的多條件動態查詢SQL
- SQL SERVER 動態查詢SQLServer
- 動態linq
- 查詢(2)--動態查詢
- PHP--動態生成sql查詢表格PHPSQL
- [C#.NET 拾遺補漏]13:動態構建LINQ查詢表示式C#
- 讓OData和NHibernate結合進行動態查詢
- C#動態查詢:巧用Expression組合多條件表示式C#Express
- 動態拼接表示式——ExpressionExpress
- ThinkPHP getBy動態查詢PHP
- 一句SQL完成動態分級查詢SQL
- 如何完成複雜查詢的動態構建?
- hibernate 動態查詢(DetachedCriteria )
- PL/SQL執行動態SQLSQL
- 關於使用ADOQuery控制元件動態執行SQL查詢 (轉)控制元件SQL
- jpa動態查詢與多表聯合查詢
- SQL SERVER 中構建執行動態SQL語句SQLServer
- Spring Boot中使用JPA構建動態查詢Spring Boot
- 動態sql查詢結果多行的處理情況SQL
- 動態SQLSQL
- 動態SQL intoSQL
- 使用動態變數進行動態資料比較變數
- [C# Expression] 之動態建立表示式C#Express
- PB帶引數帶結果集的動態SQL查詢SQL
- Mybatis連線池_動態sql語句_多表查詢實現MyBatisSQL
- SQLServer中動態查詢sql返回值給變數<整理>SQLServer變數
- SpringDataJpa (二)-動態查詢&多表操作Spring
- web後端動態匹配模型查詢Web後端模型
- django 動態查詢實現過程Django
- LINQ系列:LINQ to SQL Select查詢SQL
- 通過建立動態型別 動態構建Expression Select表示式來控制Property可見性型別Express
- Spring Data Jpa 的簡單查詢多表查詢HQL,SQL ,動態查詢, QueryDsl ,自定義查詢筆記SpringSQL筆記
- Mybatis 裡對映檔案的動態 SQL 語句,實現if,where,foreache的SQL語句動態拼接查詢MyBatisSQL
- Linq之動態排序(字元傳入)排序字元
- MyBatis 動態 SQLMyBatisSQL
- MybBatis動態SQLBATSQL
- Mybatics動態sqlBATSQL