1: from u in member.Where(u => u.LoginName == userName)2: join r in userRole on u.MemberId equals r.UserId3: join s in role on r.RoleId equals s.RoleId4: 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的進化而已。
沒有留言:
張貼留言