这是一个简单的问题,但我从EF开始并且不知道:
我有两个类(db对象):
公司(简化)
public class Company
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<UserGroup> UserGroups { get; set; }
}
和userGroup(组中有许多用户):
public class UserGroup
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<ApplicationUser> Users { get; set; }
public virtual ICollection<Company> Companies { get; set; }
}
在控制器中,我需要选择具有特定UserGroupID的公司。我不知道如何写出选择条件。我的意思是:
var currentUser = db.Users.Find(User.Identity.GetUserId());
var companies = db.Companies
.Include(c => c.Address)
.Include(c => c.User)
.Where(c => c.UserGroups == currentUser.UserGroup)
;
答案 0 :(得分:1)
看到你的ApplicationUser
课会很有帮助,但我想它有UserGroup
的导航属性?如果是这样,你可以这样做:
db.Users.Where(u => u.Id == User.Identity.GetUserId())
.SelectMany(u => u.UserGroups)
.SelectMany(g => g.Companies)
.Distinct();
答案 1 :(得分:1)
我喜欢在我想要返回的实体上编写where子句。在你的情况下:
db.Companies.Where(c => c.UserGroups.Any(g => g.ID == currentUser.UserGroup.ID));
这样您就不必添加Distinct()。