检索其中一个项目列表中项目所在的项目列表

时间:2013-05-21 22:09:58

标签: c# entity-framework

请原谅这个有点令人困惑的标题。我有一个模型(项目),其中包含项目列表(用户)。

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

我试过了:

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{...}
}

2 个答案:

答案 0 :(得分:3)

没试过,但可能会有效:

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

答案 1 :(得分:1)

问题是你将Linq(WHERE子句)和非Linq Collection操作(Contains)混合在一起。尝试使用纯Linq。 @ JamesBond的回答可能有用。

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