Linq多表連線查詢

2021-08-16 04:36:18 字數 1550 閱讀 7213

在 linq 中,join 子句可以實現 3 種型別的聯接分別是內部聯接、分組聯接和左外部聯接。

1、內部連線(相對於sql:join | inner join)

格式:join element in datasource on exp1 equals exp2

int intary1 = ;//建立整數陣列 intary1 作為資料來源

int intary2 = ;//建立整數陣列 intary2 作為資料來源

//查詢 query1 使用 join 子句從兩個資料來源獲取資料

//演示內部聯接的使用

var query1 =

from a in intary1

join b in intary2 on a equals b

select

new ;

2、分組連線

格式: join element in datasource on exp1 equals exp2intotempdata

其中,into關鍵字表示將這些資料分組並儲存到 tempdata中,tempdata是儲存一組資料的集合。(感覺和sql不同,sql查詢的結果是平面矩形的,而linq則是平面樹形的,意思是像物件的元素也是個物件)

int intary1 = ;//建立整數陣列 intary1 作為資料來源

int intary2 = ;//建立整數陣列 intary2 作為資料來源

//查詢 query1 使用 join 子句從兩個資料來源獲取資料

//演示分組聯接的使用

var query1 =

from a in intary1

join b in intary2 on a equals b 15

into tempdata

select

new ;

3、左外部聯接 (相對於sql:left join | left outer join)

第三種聯接是左外部聯接,它返回第乙個集合中的所有元素,無論它是否在第二個集合中有相關元素。在 linq 中,通過對分組聯接的結果呼叫 defaultifempty()方法來執行左外部聯接。defaultifempty()方法從列表中獲取指定元素。如果列表為空,則返回預設值。

int intary1 = ;//建立整數陣列 intary1 作為資料來源

int intary2 = ;//建立整數陣列 intary2 作為資料來源

//查詢 query1 使用 join 子句從兩個資料來源獲取資料

//演示左聯接的使用

var query1 =

from a in intary1

join b in intary2 on a equals b into tempdata

from c in tempdata.defaultifempty()

select

new ;

LINQ連線查詢

用linq進行連線查詢,感覺挺彆扭,還是用sql比較舒服,故記錄一下,以備後用。先把資料列出來 class pet public string ownername class person public string lastname listpersons new list new person ...

多表查詢(連線查詢)

多表查詢 資料 是多個表,這時注意一定要書寫連線條件。當n個表連線,至少需要n 1個連線條件。注意 1 如何判斷兩個表之間有公共列?型別一致 寬度一致。列名不能作為判斷標準,列名不同也能是公共列 如 emp的empno和emp的mgr 2 如何避免二義性問題?給每個屬性加歸屬。3 注意使用表別名。表...

多表連線查詢

1 內連線 inner join 只返回兩個表中所有滿足連線條件的行 2 外連線outer join 除了返回兩個表中所有滿足連線條件的行之外,還返回 某個表中不滿足連線條件的行 3 交叉連線 產生笛卡爾積的連線 如果連線條件使用等號 就可以叫做相等連線 1 使用natural join關鍵字進行內...