我有一个名为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)));
}
答案 0 :(得分:2)
您确定需要加入吗?看起来您需要UNION ALL
:
_context.Queries.Where(q => q.Permissions.Any(p => p.UserName == userName)).Concat(
_context.Queries.Where(q => q.CreatedBy == userName));