0

请原谅有点混乱的标题。我有一个模型(项目),其中包含项目列表(用户)。

我想检索所有项目,其中当前用户是该项目的用户列表的成员。

我试过了:

List<Project> _MemberProjects =
                    _Db.Projects.Where(p =>
                         p.Users.Contains(_User)
                    ).ToList();

这会导致以下错误:

Unable to create a constant value of type 'Nimble.Models.UserAccount'. Only primitive types or enumeration types are supported in this context.

用户模型:

public class UserAccount
{
    public int UserID { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Email { get; set; }
    public ICollection<Project> Projects{....}
}

项目模型

public class Project
{
    public int ProjectID { get; set; }
    public DateTime CreatedDate { get; set; }
    public string ProjectName { get; set; }        
    public string Owner { get; set; }       
    public ICollection<UserAccount> Users{...}
    public ICollection<ProjectGroup> Groups{...}
}
4

2 回答 2

3

没有试过这个,但它可能会工作:

List<Project> _MemberProjects =
                _Db.Projects.Where(p =>
                     p.Users.Any(u => u.UserID == _User.UserID )
                ).ToList();
于 2013-05-21T22:19:31.343 回答
1

问题是您将 Linq(WHERE 子句)和非 Linq 集合操作(​​包含)混合在一起。尝试使用纯 Linq。@JamesBond 的回答可能有效。

你在查询数据库吗?那么 JOIN 可能是另一种解决方案,但确切的语法取决于您如何存储两个表之间的关系。

于 2013-05-21T22:45:26.280 回答