将查询结果包括到列表中



我有医院的列表

医院型号:

public class Hospital
{
    [Key]
    public int HospitalID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<HospitalSpeciality> HospitalSpecialities { get; set; }
    public virtual ICollection<UserHospital> UserHospitals { get; set; }
}

我有与医院相关的用户。型号:

public class UserHospital
{
    [Key]
    public int UserHospitalID { get; set; }
    public int HospitalID { get; set; }
    public Hospital Hospitals { get; set; }
    public string Id { get; set; }
    public ApplicationUser Users { get; set; }
}

在我的列表中,我还需要返回与医院关联的用户的编号。

如果我只有一家医院,这个查询很容易,但在我的场景中,我有一个医院列表

控制器:

    public ActionResult Index()
    {
        var result = db.Hospitals.ToList();
        return View(result);
    }

我真的不知道如何将查询结果(用户数量)包括在我的列表中。

我的观点:

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.HospitalID }) |
            @Html.ActionLink("Details", "Details", new { id=item.HospitalID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.HospitalID })
        </td>
    </tr>
}

看起来您需要确保在查询中返回用户。。。像这样:

public ActionResult Index()
{
    var result = db.Hospitals
                   .Include("UserHospitals")
                   .Include("UserHospitals.Users")
                   .ToList();
    return View(result);
}

即使它们是虚拟的,也不会发生延迟加载,因为您正在剃刀视图中访问属性。Include正在强制加载Eagle。

或者,公开另一个数据库集。。。

public DbSet<User> Users { get; set; }

现在您可以选择以下内容:

db.Users.Where(x => !x.active).ToList();

让我知道你的进展:)

相关内容

最新更新