2016-05-06 130 views
0

我有:Users,Hospitals,UserHospitals,UserAcessesUserAcessesViewModel表/模型。LINQ查询过滤页面结果

我有一个显示所有用户访问的页面。

我通过链接发送给医院ID/UserAcess/1

我需要查询,如果用户对表UserHospitals到医院ID的连接,如果这是真的,显示来自用户所有acesses被连接到相同的医院ID。

这就是我和我的查询是不正确的:

public ActionResult Index(int? id, string searchString, string sortOrder, string SelectedUserId) 
    { 
     if(!User.IsInRole("Admin")) 
     { 
      if (id == null) 
      { 
       return View("Error"); 

      } 
      else if (!db.Hospitals.Any(o => o.HospitalID == id)) 
      { 
       return View("Error"); 
      } 

      var model = new UserAccessViewModel(); 
      var userAccesses = db.UserAccesses.Include(u => u.User); 

      ViewBag.IDSortParm = sortOrder == "ID_asc" ? "ID_desc" : "ID_asc"; 
      ViewBag.EmailSortParm = sortOrder == "Email_asc" ? "Email_desc" : "Email_asc"; 
      ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date"; 
      ViewBag.NameSortParm = sortOrder == "Name_asc" ? "Name_desc" : "Name_asc"; 

      var userID = User.Identity.GetUserId(); 
      var result = db.Hospitals.Include("UserHospitals") 
           .Where(x => x.UserHospitals 
           .Any(u => u.Id == userID && u.HospitalID == id)) 
           .FirstOrDefault(); 

      if (result != null) 
      { 
       userAccesses = db.UserAccesses.Include(u => u.User).Include("UserHospitals").Where(w => w.User.any()))); 
      } 
      else 
      { 
       return View("Error"); 
      } 
     } 

我的模型:

医院

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

UserHospital

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

UserAcesses

public class UserAccess 
{ 
    [Key] 
    public int UserAcessID { get; set; } 
    public DateTime Access { get; set; } 



    public string UserID { get; set; } 
    [ForeignKey("UserID")] 

    public ApplicationUser User { get; set; } 
} 

UserAcessViewModel

public class UserAccessViewModel 
{ 
    [Key] 
    public int ID { get; set; } 
    public IEnumerable<UserAccess> UserAccesses { get; set; } 

    [Display(Name = "Selecionar Utilizador")] 
    public string SelectedUserId { get; set; } 

    public IEnumerable<SelectListItem> UserNamesList; 
} 

有我table's connection

如果您需要abount我院更多信息 - UserHospital - 用户,这是here

回答

0

如果需要在选择请做一些细化列。

List<UserHospitals> _userHospitals= (from p in obj.UserHospitals 
where (p.HospitalID == _hospitalId || p.IsStatus==1) 
.GroupBy(p => p.HospitalID) 
select new {}.ToList(); 
+0

感谢您的回答,但我不明白它 –

+0

你想要连接到医院的所有访问id.Am我是吧? – stylishCoder

+0

我希望来自用户的所有访问都具有连接到UserHospitals上当前医院ID的ID。 [这是你的代码的结果](https://i.gyazo.com/663b08c36fa1dd3c740577153b07a6be.png) –