我有两个主表Task和Person。还有一个名为Assign的链接表。
任务可以通过Assign表链接许多Person记录。
我有一个运行良好的创建表单,有一个多选列表,我可以在任何会话中一次为Assign表添加多个人。
我想要将我的选择列表的值过滤为不包括已根据任务ID(在创建请求URL字符串上传递)在Assign表中已存在的人员表中的记录。
public IActionResult Create(int task)
{
ViewData["PersonId"] = new SelectList(_context.Person, "PersonId", "PersonName");
ViewData["TaskId"] = new SelectList(_context.Task, "TaskId", "TaskName", task);
return View();
}
答案 0 :(得分:0)
被修改
ViewData["PersonId"] = new SelectList(_context.Person.Where(a=>a.Assign.Any(b=>b.TaskId == task), "PersonId", "PersonName");
答案 1 :(得分:0)
我通过为我想删除的所有项目创建一个新的VAR来解决这个问题,然后查询它们:
var query = from a in _context.Assign.where (a.Task == task) select a.PersonId;
ViewData["PersonId"] = new SelectList(_context.Person.Where(x => !query.Contains(x.PersonId)).ToList(), "PersonId", "Fullname");