Чтобы просмотреть более полный список, который вы можете запустить:
show session status;
или
show global status;
См. эту ссылку , чтобы лучше понять использование.
Если вы хотите узнать подробности о базе данных, которую вы можете запустить:
status;
Я обнаружил свою проблему, я выбрал
useritems.FirstOrDefault().item_number
То, что я выбрал (и FirstOrDefault!), Вместо того, что я использовал для своего соединения:
ui.item_number
Итак, мой полный запрос linq есть
var users = (from u in db.users
join ug in db.user_to_groups on p.user_id equals pg.user_id into pgrp
from ug in pgrp.DefaultIfEmpty()
join g in db.groups on pg.group_id equals g.group_id into groups
from g in groups.DefaultIfEmpty()
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 = ui == null ? string.Empty : ui.item_number, usergroup = g == null ? string.Empty : g.name});
Спасибо за помощь!
Вам нужно будет посмотреть на конструкцию join ... into ...
.
... Еще кое-что, что нужно учесть ... LINQ позволит вам превратить вашу простую структуру таблицы в сложную иерархию. Другой вариант помимо левых объединений - это вложенные запросы. Может быть, что-то вроде этого ...
var selected = from user in users
select new
{
user,
items = from item in user_items
where item.user_id == user.user_id
join it in item_types
on item.item_type_id equals it.item_type_id
select it,
groups = from ug in user_to_groups
where ug.user_id == user.user_id
join @group in groups
on ug.group_id equals @group.group_id
select @group.name,
};
Ваш запрос можно было бы написать более кратко, если вы определите некоторые ассоциации между вашими объектами:
from u in db.Users
from ug in u.User_To_Groups.DefaultIfEmpty()
let g = ug.Group
from ui in u.UserItems.DefaultIfEmpty()
select new
{
user = u,
item_number = ui == null ? string.Empty : ui.item_number,
usergroup = g == null ? string.Empty : g.name
});