У меня есть следующие отношения entitiy. Я хочу фильтровать ресурсы, передавая идентификатор проекта.Запрос Linq для фильтра объекта graph
Класс проекта
public class Project : EntityBase
{
public Project()
{
this.Tasks = new HashSet<Task>();
}
[Key]
public Guid GUID { get; set; }
public virtual ICollection<Task> Tasks { get; set; }
}
класс Task
public class Task : IIdentifier
{
public Task()
{
this.Assignments = new HashSet<Assignment>();
}
[Key]
public Guid GUID { get; set; }
[ForeignKey("Projects")]
public Guid? ProjectId { get; set; }
public virtual Project Projects { get; set; }
public virtual ICollection<Assignment> Assignments { get; set; }
}
класс ресурсов
public class Resource : IIdentifier
{
public Resource()
{
this.Assignments = new HashSet<Assignment>();
}
[Key]
public Guid GUID { get; set; }
public virtual ICollection<Assignment> Assignments { get; set; }
}
Назначение класса
public class Assignment : IIdentifier
{
[Key]
public Guid GUID { get; set; }
[ForeignKey("Tasks")]
public Guid TaskId { get; set; }
public virtual Task Tasks { get; set; }
[ForeignKey("Resources")]
public Guid ResourceId { get; set; }
public virtual Resource Resources { get; set; }
}
Теперь я хочу, чтобы получить все ресурсы, когда я прохожу проект GUID
public IEnumerable<Resource> GetResourcesForViewsByProjectId(Guid ProjectId)
{
var x = from t in Uow.Tasks.GetAll().Where(con => con.ProjectId == ProjectId)
from a in Uow.Assignments.GetAll().Where(c => c.TaskId == t.GUID)
from r in Uow.Resources.GetAll()
.Where(r => r.Assignments.Where(con => con.ResourceId == r.GUID))
.DefaultIfEmpty()
select r;
return x;
}
, но это не работает. Какие-либо предложения?
Просто заметил, что вы используете метод с GETALL() - может возникнуть необходимость лавировать, что на конце UOW. Задачи, Uow.Assignments и Uow.Resources. Я обновлю свой пример, если это так. –
Его работы отлично. спасибо –