0

我有一个名为 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)));
        }
4

1 回答 1

2

你确定你需要加入吗?看起来你需要UNION ALL

_context.Queries.Where(q => q.Permissions.Any(p => p.UserName == userName)).Concat(
    _context.Queries.Where(q => q.CreatedBy == userName));
于 2012-06-01T08:43:52.267 回答