我有以下架构:
客户 - ClientId 用户 - UserId 办事处 - OfficeId
ClientOffices - ClientId,OfficeId UserOffices - UserId,OfficeId
粗体实体是EntityFramework实体。
现在我需要编写一个接受UserId的函数并返回一个客户列表 - 它们也属于用户所属的办公室。
例如,Say ABC Inc.与伦敦办事处合作,XYZ Inc.与纽约办事处合作。 用户“Yakoon”仅适用于Lond Office。
执行时的linq语句只能返回ABC Inc. 如果“Yakoon”也属于纽约办事处,那么它应该返回btoh ABC和XYZ Inc。
由于
答案 0 :(得分:2)
实体框架等效方法类似于:
public IEnumerable<Client> GetClientsForUser(int id)
{
return (from u in objectContext.Users
where u.UserId == id
from o in u.Offices
from c in o.Clients
select c);
}
确保您的UserOffices和ClientOffices表上有主键,以便EF将它们识别为联结表。
答案 1 :(得分:1)
这个怎么样:
public IEnumerable<Client> GetClientsForUser(int id)
{
return (from u in userOffices
where u.UserId == id
join o in clientOffices on u.OfficeId equals o.OfficeId
join c in clients on o.ClientId equals c.ClientId
select c);
}