У меня есть таблица пользователей, таблица user_items, таблица user_to_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
Конечно, я мог бы разбить его на: выберите user.username, user.email, user_items.item_number от пользователя осталось присоединиться user_items на user.user_id = user_items.user_id Что я имею в Linq2SQL как: вар users = (from u in db.users Присоединиться к ui в db.user_items на u.user_id равно ui.user_id в useritems из ui в useritems.DefaultIfEmpty() выбрать новый {user = u, item_number = useritems == null? string.Empty: useritems.FirstOrDefault().номер предмета}); Однако он все еще не возвращает все результаты, которые он должен, и я не вижу, где я ошибаюсь. – Neophyte
Если вы отредактируете свой вопрос с этой информацией, вам будет легче понять. – ChrisF