Обнуляется ли одно из полей идентификатора?
Если это так, вам нужно получить доступ к свойству .Value
var myDeal = (from u in db.Users
join ur in
select new
{
UserID = u.UserID,
UserRoleID = (from ur in u.UserRoles where u.UserRoleID.Value equals ur.UserRoleID select ur).FirstOrDefault().UserRoleID
});
Вы также можете попробовать что-то вроде этого:
var myDeal = (from u in db.Users
join ur in db.UserRoles
on new {ID = u.UserRoleID.value} equals new {ID = ur.UserRoleID} into tempRoles
from roles in tempRoles.DefaultIfEmpty()
select new
{
UserID = u.UserID,
UserRoleID = roles.UserRoleID
});
Вы используете tempRoles для выполнения левого внешнего соединения. Поэтому, если роль не назначена, вы все равно получите идентификатор пользователя.
Я не проверял это, это только у меня на голове.
Удачи,
Patrick.