LinQ 使用join 需要知道Outer及Inner兩個資料型別物件。
JOIN 定義
Join方法如下:
1 | public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>( |
方法參數說明:
- outer : 第一個序列項目的類型。
- inner : 與 Outer 類型比對項目 (第二個序列項目類型)。
- outerKeySelector : 跟 Inner 有關的屬性
- innerKeySelector : 跟 Outer 有關的屬性
- resultSelector : 查詢結果內容
- comparer : Inner 、 Outer 屬性的等值比較器
LINQ的Join方法是Inner Join,所以尋找的內容不存在資料不會出現
查詢運算式
使用 Join 簡易方式,以下方式有包含著多個Select 內容。
- LINQ Query Expression
1 | from row in Persons |
- Lambda Expression
1 | Persons |
Join - 比對多筆
LinQ會比對同一行的資料,如果有多個不同資料內容就會需要對好資料內容。
- LINQ Query Expression
1 | from row in Persons |
- Lambda Expression
Lambda 則是比對x,y同樣也必須要同一個位置、同個名稱如果遇到名稱不一樣,可以使用new{name = x.ClassName}方式。
1 | Persons.Join( |
Left Join
LinQ 有 Join()是交集的概念,若要有Left join 可以使用 DefaultIfEmpty(),使用方式如下。
- LINQ Query Expression
1 | from row in Persons |
使用會與SQL LEFT Join 觀念不太同,所以使用方式需要自行判斷。
參考文件
[Will - 分享幾個 LINQ to SQL 執行各種 Join 查詢的技巧] : https://blog.miniasp.com/post/2010/10/14/LINQ-to-SQL-Query-Tips-INNER-JOIN-and-LEFT-JOIN
[ 艾瑞克 - C# Linq Join & Lambda Join] : https://dotblogs.com.tw/erictsaiblog/2015/05/17/151321
結語
使用LinQ Join部分會比較難使用,需要多多測試練習才能上手。
如果是多Join (兩個以上),建議能把它拆開就把它拆開,有可能遇到Join太多會導致搜尋效能會變差。








![[筆記] Synology 創建 Docker datalust/seq 環境](/image/20250810_08-15-28.png)
![[DevOps] 創建一個 docker agent](/image/20250810_08-16-08.png)