2016-05-05 75 views
0

對於此我有3個模型:醫院,AspNetUsers,UserHospitals。配置多對多關係

這是UserHospitals型號:

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; } 
} 

有了它,我可以添加用戶ID和醫院ID此表。

現在,我需要檢查哪些醫院用戶的連接。

在我的控制器上返回醫院列表,我只需要返回用戶有連接的醫院。

這將返回所有醫院,我如何過濾它只顯示用戶與UserHospitals上的醫院連接?

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

我不想增加一個新的視圖模型是加盟模式或任何

== ==編輯

醫院模式

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; } 
} 

enter image description here

+0

您如何獲得用戶與醫院的連接?如果它的UserHosipital Id是'db.Hosipitals.where(h => h.UserHosipitalId == expectedId)' – Eldho

+0

Hospital - > UserHospital - > User,我沒有與Hospital模型的用戶直接連接。你可以在我的編輯中看到它。 –

回答

1

嘗試這個:

public ActionResult Index() 
{ 
    var result =db.Hospitals.Include("UserHospitals").where(x=> x.UserHospitals.Any(x=>x.Id== userId)).ToList(); 
    return View(result); 
} 
+0

就是這樣!謝謝! –

+0

如果可以,請看看[this](http://stackoverflow.com/questions/37053194/block-access-by-query-result)plz: –