2011年3月28日 星期一

LINQ的join指令探討

 

架構

  1: from u in member.Where(u => u.LoginName == userName)
  2: join r in userRole on u.MemberId equals r.UserId
  3: join s in role on r.RoleId equals s.RoleId
  4: select s.RoleName

注意這裡第2行與第3行裡面的equals指令,其左右兩邊的敘述,並不可以對調


這牽涉到join的宣告方式,我們看一下System.Linq.Enumerable裡面是這麼宣告的:


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)


看到這邊我們就知道為什麼了,一切都是函式簽章搞的鬼啊。果真LINQ不僅僅是SQL的進化而已。

沒有留言:

張貼留言