可能的LINQ查询,实体框架核心

时间:2017-05-18 21:14:06

标签: asp.net-mvc entity-framework core

我有两个主表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();

    }

2 个答案:

答案 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");