【发布时间】:2016-04-24 18:23:05
【问题描述】:
我一直在尝试编写一个 linq 代码,通过传递分配给该特定经理的员工 ID 来获取经理详细信息。我有两张桌子
//User Table
public UserProfile() //It has both Employee and Manager Records
{
public long UserProfileID{ get; set; } //Identity Column
public string FirstName{ get; set; }
public virtual ICollection<UserOfficialInfo> UserOfficialInfoes { get; set; }
}
//User Official Detail Table
public UserOfficialInfo() //It has Employee to Manager assignment
{
public long UserOfficialInfoID{ get; set; } //Identity Column
public long ReportingTo{ get; set; } //This column will store Manager Id for employee
public long UserProfileID{ get; set; } //Foreign Key to above table
public virtual UserProfile UserProfile { get; set; }
}
注意:如您所见,第一个表有两个记录,第二个表有报告详细信息,其中 1 个用户向用户 2 报告。所以首先我传递员工 1 id 并获取报告 ID,然后我将获取详细信息通过从第二个表中获取报告 ID,从表 1 中报告人
这是我尝试工作的代码
public IEnumerable<UserProfile> GetReportingPerson(long UserProfileID)
{
var user1 =
from u in DbContext.UserProfiles
let userofficial = from userss in DbContext.UserProfiles
join useof in DbContext.UserOfficialInfoes
on userss.UserProfileID equals useof.UserProfileID
where useof.UserProfileID == UserProfileID
select useof.ReportingTo
where u.UserProfileID == userofficial.FirstOrDefault()
select u;
return user1.ToList();
}
上面的代码给出了结果,但我使用的是 2 个 linq 代码,有没有什么有效的方法可以一次性获取 Manager 的详细信息。
【问题讨论】:
-
你在使用实体框架吗?
-
是的,只需在第一个 linq 查询中添加一个额外的连接
-
您的问题不清楚,您在参数中传递
UserID并没有使用它? -
你能把表
UserProfiles的Model结构也放上来吗?
标签: c# mysql linq entity-framework-6