在 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關鍵字進行內...