我有一個用戶表,一個user_items表,一個user_to_group表和一個group表。如何傳遞多重SQL左連接到Linq-To-SQL
如何將以下SQL查詢轉換爲正確的Linq-to-sql查詢?
select user.username, user.email, user_items.item_number, item_types.desc, [group].name from user
left join user_items on user.user_id = user_items.user_id
left join item_types on user_items.item_type_id = item_types.item_type_id
left join user_to_group on user.user_id = user_to_group.user_id
left join [group] on user_to_group.group_id = [group].group_id
我試過使用組連接並加入了DefaultIfEmpty,但我無法返回與我的SQL查詢完全相同的結果。
謝謝。
@ChrisF,
當然,我可以把它分解成:
select user.username, user.email, user_items.item_number from user
left join user_items on user.user_id = user_items.user_id
這我倒在LINQ2SQL爲:
var users = (from u in db.users
join ui in db.user_items on u.user_id equals ui.user_id into useritems from ui in useritems.DefaultIfEmpty()
select new { user = u, item_number = useritems == null ? string.Empty : useritems.FirstOrDefault().item_number});
但是,它仍然沒有全部歸還它應該的結果,我看不出我要去哪裏錯了。
您是否嘗試過打破你的SQL分解成幾個步驟,並在時間轉換爲LINQ的一步?你仍然可能會陷入困境;)但是你會有更多的細節來補充這個問題和一個特定的問題。 – ChrisF 2010-06-20 15:14:42
當然,我可以把它分解成: 選擇user.username,user.email,從用戶 user_items.item_number留在user.user_id = user_items.user_id 這我倒在LINQ2SQL作爲加入user_items: VAR users =(從db.users中的u開始 將u.user_id中的ui用戶id中的ui等於ui.user_id加入useritems useritems.DefaultIfEmpty() select new {user = u,item_number = useritems == null? string.Empty:useritems.FirstOrDefault()。項目編號});但是,它仍然不會返回它應該的所有結果,而且我也看不到我要出錯的地方。 – Neophyte 2010-06-20 15:26:19
如果您使用此信息編輯您的問題,將會更容易理解。 – ChrisF 2010-06-20 15:42:15