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/
留言
張貼留言