Linq to SQL - Right Join
本文关键字:Right Join SQL to Linq | 更新日期: 2023-09-27 18:24:22
我正在尝试转换此查询(已在工作)
select [User].ID AS ID_USER
from [User]
right join Building on Building.ID = 4 AND
Building.ID_USER_RESPONSIBLE <> [User].ID
where [User].ID_MANAGER = 1
从Linq到SQL,但我不知道自己做错了什么。看看我的
IList<User> lstUser = (from building in db.GetTable<Building>()
join user in db.GetTable<User>()
on new
{
ID_BUILDING = building.ID,
ID_USER = building.ID_USER_RESPONSIBLE
}
equals new
{
ID_BUILDING = 4,
ID_USER != user.ID
} into grpUser
from grp in grpUser.DefaultIfEmpty()
where building.ID_MANAGER = 1
select new
{
ID_USER =
});
我需要归还所有用户加上对任何建筑不负责的用户;
编辑
这里发布的任何解决方案都有效。我决定只做这个:
var lstUser = (from building in db.GetTable<Building>()
join user in db.GetTable<User>()
on building.ID equals 4
where user.ID_MANAGER == 1 &&
building.ID_USER_RESPONSIBLE != user.ID
select new
{
ID_USER = user.ID,
NAME = user.NAME
}).ToList();
查看以下是否有效:
IList<User> lstUser = (from building in db.GetTable<Building>()
join user in db.GetTable<User>()
on new
{
ID_BUILDING = building.ID,
ID_USER = building.ID_USER_RESPONSIBLE,
building.ID_MANAGER
}
equals new
{
ID_BUILDING = 4,
ID_USER = user.ID,
1
} into grpUser
from grp in grpUser.DefaultIfEmpty()
select new
{
ID_USER = grp.ID
});
话虽如此,你的要求似乎有差距,"我需要返回所有用户加上对任何建筑不负责的用户;"我可能读错了你的声明,但不负责建筑的用户列表不是更大的"所有用户"集合的子集。因此,您将始终只获得所有用户,而不管他们的建筑成员资格如何。