在使用 EF 从多个 table 获取数据时需要帮助

Need help in getting data from multiple table using EF

我正在使用此查询获取列表格式的详细信息,因为我也正在获取用户 ID。

reportProblemsList = objEntities.ReportProblems.ToList();

现在我想根据用户 table 的用户 ID 获取用户详细信息。所以我尝试了 foreach 循环,如下所示。

foreach(var item in reportProblemsList)
{
   userdetails = objEntities.Users.Where(x => x.UserId == item.Userid).ToList();
}

现在我想将所有用户详细信息添加到列表中,然后访问它。下面是我的完整代码。

List<ReportProblem> reportProblemsList = new List<ReportProblem>();
List<User> userdetails = new List<User>();

reportProblemsList = objEntities.ReportProblems.ToList();

foreach(var item in reportProblemsList)
{
   userdetails = objEntities.Users.Where(x => x.UserId == item.Userid).ToList();
}

reportProblemsList.Add(userdetails);

但无法让它工作..任何想法。

谢谢

我假设您需要一个报告问题的用户列表。

var userIds = objEntities.ReportProblems.Select(q=> q.Userid).ToList();
List<User> userdetails = objEntities.Users.Where(x => userIds.Contains( x.UserId)).ToList();

如果您的数据库是根据给定的信息正确设计的,那么您的 ReportProblem 对象很可能还具有类型 User 的 属性 User。如果是这种情况,您可以指示 EF 核心通过执行以下操作在您的查询中包含此类嵌套属性:

var reportProblemsList = objEntities.ReportProblems
    .Include(report => report.User)
    .ToList();

如果你没有这个 属性 你必须创建一个匿名类型来保存元组:

var reportsWithUsers = objEntities.ReportProblems
    .Join(objEntities.Users, r => r.UserId, u => u.UserId, (Report, User) => (Report, User)
    .ToList();