0

У меня есть класс под названием Query с именем CreatedBy, имя пользователя, которое его создало. У меня также есть класс под названием Разрешения с разрешениями для запроса.Entity Framework Query на основе фильтра дочерних объектов и в то же время на основном объекте

Я создал запрос, который возвращает меня на основе текущего пользователя, запросы, к которому пользователь имеет доступ, на основе коллекции разрешений, но мне нужно СОХРАНИТЬ, что с запросами, которые пользователь создал.

Если по какой-либо причине пользователь, создавший его, его также в коллекции разрешений, он не должен возвращаться дважды.

Вот мой код

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))); 
     } 

ответ

2

Вы уверены, что вам нужно присоединиться? Похоже, что вам нужно UNION ALL:

_context.Queries.Where(q => q.Permissions.Any(p => p.UserName == userName)).Concat(
    _context.Queries.Where(q => q.CreatedBy == userName)); 
Смежные вопросы