私は投影を使用してViewModelsにデータを入力しています。Entity Framework - .Select()内の動的フィルタ
この場合、私はProjects and Tasksで作業しています。
私は、ユーザーがプロジェクトを選択し、プロジェクト内でタスクを割り当てることができる人をOPTIONALLYで選択できるフォームを持っています。
public IEnumerable<TaskVM> TaskVM { get; set; }
私はそうのようなクエリをフィルタリングしています:
var query = db.Projects.AsQueryable();
if (filterProjectId)
{
query = query.Where(p => p.ProjectId == ProjectId);
}
if (filterAssignedTo)
{
query = query.Where(p => p.Tasks.Any(t => t.AssignedTo == "John"));
}
質問:以上持っているすべてのプロジェクトを返します私のプロジェクトのViewModelに
、私は仕事のために、このビューモデルを持っていますJohnに割り当てられたタスクはすべて削除されますが、Fredに割り当てられたタスクも戻されます。私の質問はこれです:どのように私はすべてのプロジェクトを得ることができますが、ジョンに割り当てられたタスクのみ?
私はこれを行うことができます知っている:
var resultList = query.Select(p => new ProjectVM
{
ProjectId = p.ProjectId,
ProjectName = p.ProjectName,
TaskVM = p.Tasks.Where(t => t.AssignedTo == "John").OrderByDescending(t => t.TaskName).Select(t => new TaskVM
{
TaskId = t.TaskId,
TaskName = t.TaskName,
AssignedTo = t.AssignedTo
})
});
しかし、私はジョンをフィルタリングする必要がある場合、私は知りません。ユーザーはprojectIdを持つすべてのプロジェクトを望むかもしれません。
もう一度、すべてのプロジェクトを取得するにはどうしたらよいですか?ただし、Johnに割り当てられたタスクはどうすればいいですか?
ありがとうございました!あなたはこのようなフィルタ「に割り当てられた」を定義でき