Linq Join

Linq的Join 相當於 SQL的 Join

目前Linq有兩種方法

public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
    this IEnumerable<TOuter> outer, //被Join的資料
    IEnumerable<TInner> inner, //要Join的資料
    Func<TOuter, TKey> outerKeySelector, //與inner相同的資料 
    Func<TInner, TKey> innerKeySelector, //與outer相同的資料
    Func<TOuter, TInner, TResult> resultSelector); //select 後的資料

public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
    this IEnumerable<TOuter> outer,
    IEnumerable<TInner> inner,
    Func<TOuter, TKey> outerKeySelector,
    Func<TInner, TKey> innerKeySelector,
    Func<TOuter, TInner, TResult> resultSelector,
    IEqualityComparer<TKey> comparer); //客製比較器

from c in Customers
join o in Orders on c.CustomerID equals o.CustomerID
select c.ContactName

可以反寫成

Customers
   .Join (
      Orders,
      c => c.CustomerID,
      o => o.CustomerID,
      (c, o) => c.ContactName
   )

又可以變成 Customers.Join(Orders , Customer => c , Orders => o ,(c , o ) => c.ContactName);

在SQL中可以表現是

SELECT c.ContactName
From Customers as c
Join
Orders as o
On c.CustomerID = o.CustomerID

而 Linq的Join 是 Inner Join

差距大概在這邊,因此假如要做資料一定要有值 沒值就Null了 記得要加Null判斷

參考:https://ithelp.ithome.com.tw/articles/10196394?sc=iThelpR
https://vector.cool/mysql-%E5%9C%96%E8%A7%A3-left-join-inner-joinright-join-%E7%9A%84%E5%B7%AE%E7%95%B0%E5%8F%8A%E7%AF%84%E4%BE%8B/

留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤