我有一个名为 Query 的类,其中有一个名为 CreatedBy 的字段,即创建它的用户名。我还有一个名为 Permissions 的类,它具有查询的权限。
我创建了一个查询,该查询根据当前用户返回我,用户有权访问的查询,基于 Permissions 集合,但我需要将其与用户还创建的查询一起加入。
如果由于某种原因,创建它的用户也在 Permissions 集合中,则不应返回两次。
这是我的代码
public class Query
{
public int QueryId { get; set; }
public string QueryName { get; set; }
public string QuerySql { get; set; }
public string CreatedBy { get; set; }
public string QueryType { get; set; }
public string RequestType { get; set; }
public string Column1 { get; set; }
public string Operator1 { get; set; }
public string Value1 { get; set; }
public string Connector2 { get; set; }
public string Column2 { get; set; }
public string Operator2 { get; set; }
public string Value2 { get; set; }
public string Connector3 { get; set; }
public string Column3 { get; set; }
public string Operator3 { get; set; }
public string Value3 { get; set; }
public virtual ICollection<Permission> Permissions { get; set; }
}
public class Permission
{
public int PermissionId { get; set; }
public string UserName { get; set; }
}
public IQueryable<Query> GetQueriesForUser(string userName)
{
return _context.Queries.Where(q => q.Permissions.Any(p => p.UserName.Equals(userName)));
}