Linq多表查詢條件批量刪除

2021-09-21 20:42:20 字數 1137 閱讀 9344

前陣寫了linq的單錶生成相對sql執行的批量刪除,總覺得刪除條件太侷限了,並且又不能遮蔽linq的級聯條件,這很容易誤導一些人。所以想了應該還是要支援才好。呵呵。

其實思路和上次一樣,就是生成sql,用linq自身條件組合sql應用,沒有什麼好說的。組合sql用 exists關鍵字,組合乙個子查詢。

delete

from

[tablename

]where

exists

(select

..from

[tablename

]where

query );

直接上code:

**   

/// exists  

///   

/// 

name

="t"

>  

/// 

name

="source"

>  

/// 

name

="query"

>  

/// <

returns

>

returns

>  

public

static

intdelete

(this system.data.linq.

table

source, expression> query)  

where

t : class  

cmd = 

null

;  return

db.executecommand(sql, dbparams.toarray());  

}  複製** 

呼叫方式就很簡單了,乙個lamdam表示式,就搞定。比如

console.write( datacontext.test.delete(t => t.id != null||t.name.contains("qq")&&t.orders.orderdate<=datetime.now));

例子沒有從重寫linq或者擴充套件linq表示式出發,因為從這裡出發我能力估計還差一籌,呵呵還是我覺得沒有必要,這樣的實現是否更簡單,實現的功能更多些,為何不重用人家ms的東西呢,個人觀點而已。

Linq多表查詢條件批量刪除

前陣寫了linq的單錶生成相對sql執行的批量刪除,總覺得刪除條件太侷限了,並且又不能遮蔽linq的級聯條件,這很容易誤導一些人。所以想了應該還是要支援才好。呵呵。其實思路和上次一樣,就是生成sql,用linq自身條件組合sql應用,沒有什麼好說的。組合sql用 exists關鍵字,組合乙個子查詢。...

Linq多表連線查詢

在 linq 中,join 子句可以實現 3 種型別的聯接分別是內部聯接 分組聯接和左外部聯接。1 內部連線 相對於sql join inner join 格式 join element in datasource on exp1 equals exp2 int intary1 建立整數陣列 int...

Mybatis批量刪除多表

mybatis要批量刪除多表的資料,怎麼辦 今天又同事問到了 delete from where gov frame id 說明 tablelist是引數,govframeid也是引數 記得使用 關鍵字,不要使用 關鍵字 刪除歷史已經儲存,但是有可能發生了異常的資料 mapparams maps.n...