【问题标题】:Need help in getting data from multiple table using EF在使用 EF 从多个表中获取数据时需要帮助
【发布时间】:2021-12-24 00:44:54
【问题描述】:

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

reportProblemsList = objEntities.ReportProblems.ToList();

现在我想根据用户表中的用户 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 reportProblemsList = objEntities.ReportProblems.Include(r =&gt; r.User).ToList() 怎么样? (如果类型ReportProblem 有这个属性?)
  • 你从这个函数返回了什么?你期望什么输出?

标签: c# asp.net asp.net-mvc entity-framework entity-framework-core


【解决方案1】:

如果您的数据库是根据给定信息正确设计的,那么您的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();

【讨论】:

  • 如果我想在 reportProblemsList 中添加这个 userdetails 列表,那么我正在使用 AddRange 但它没有添加值。像这样——reportProblemsList.AddRange(userdetails);
【解决方案2】:

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

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

【讨论】:

  • 如果我想在 reportProblemsList 中添加这个 userdetails 列表,那么我正在使用 AddRange 但它没有添加值。像这样——reportProblemsList.AddRange(userdetails);
猜你喜欢
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 2013-09-14
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多