检索项目列表,如果项目存在于其中一个项目列表中
本文关键字:项目 列表 一个 于其中 如果 存在 检索 | 更新日期: 2023-09-27 18:14:48
请原谅标题有些混乱。我有一个模型(项目),其中包含一个项目列表(用户)。
我想检索所有项目,其中当前用户是该项目用户列表的成员。
我试过:
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{...}
}
还没有试过,但它可能工作:
List<Project> _MemberProjects =
_Db.Projects.Where(p =>
p.Users.Any(u => u.UserID == _User.UserID )
).ToList();
问题是您将Linq (WHERE子句)和非Linq Collection操作(Contains)混合在一起。尝试使用纯Linq。詹姆斯·邦德的答案可能管用。
您正在查询数据库吗?那么JOIN可能是另一种解决方案,但确切的语法取决于您如何存储两个表之间的关系。