【发布时间】:2019-03-18 13:01:58
【问题描述】:
我有以下课程:
public class AssignmentDetails : EntityBase
{
public DateTime StartingTime { get; protected set; }
public DateTime EndingTime { get; protected set; }
public ICollection<AssignedUser> AssignedUsers { get; protected set;}
public Assignment Assigment { get; protected set; }
public int AssigmentId { get; protected set; }
public int OwnerId { get; protected set; }
public User Owner { get; protected set; }
public State State { get; protected set; }
public AssignmentDetails(DateTime startingTime,DateTime endingTime,int ownerId,State state,ICollection<AssignedUser> assignedUsers)
{
AssignedUsers = assignedUsers;
StartingTime = startingTime;
EndingTime = endingTime;
OwnerId = ownerId;
State = state;
}
public AssignmentDetails() { }
}
public class Assignment : EntityBase
{
public string Title { get; protected set; }
public AssignmentDetails AssignmentDetails { get; protected set; }
public string Description { get; protected set; }
public int ParentAssignmentId { get; protected set; }
public Assignment(string title,string description,AssignmentDetails assignmentDetails)
{
Title = title;
Description = description;
AssignmentDetails = assignmentDetails;
}
public void AddParentAssignment(int parentAssignmentId)
{
ParentAssignmentId = parentAssignmentId;
}
public Assignment(){ }
}
public class AssignedUser : EntityBase
{
public AssignmentDetails Assignment { get; protected set; }
public int AssignmentDetailsId { get; protected set; }
public int UserId { get; protected set; }
public AssignedUser(int userId)
{
UserId = userId;
}
public AssignedUser() { }
}
我需要查找特定用户的所有分配,该特定用户是分配的所有者,或者在 AssignedUsers 中分配
我尝试了以下方法和其他一些替代方法,但看起来我在某处听到了我的耳朵。
public async Task<List<Assignment>> GetAllAsignmentsAsync(int userId)
{
return await _context.Assignments
.Include(a => a.AssignmentDetails)
.Where(x => x.AssignmentDetails.OwnerId == userId || x.AssignmentDetails.AssignedUsers.SelectMany(u=> u.UserId== userId))
.ToListAsync();
}
【问题讨论】: