Linq查询无法成功检索组合键表的数据

时间:2018-09-09 10:45:34

标签: c# asp.net-mvc linq ef-code-first

嗨,我想编写一个linq查询来检索由于多对多关系而生成的复合表的所有数据。

这是我在控制器中的查询

 public ActionResult Index()
    {
        var act = (from i in _context.act
                   from j in _context.mvz
                   where i.Id == j.Id
                   select i).ToList();


        var mvz = _context.mvz.ToList();
        var vm = new AAMMViewModel()
        {
            actz = act
            mvz = mvz
        };
        if (vm == null)
        {
            return Content("No items found in database");
        }
        return View(vm);
    }

这是视图模型

  public class AAMMViewModel
{
    public List<Actors> actz { get; set; }
    public List<Movies> mvz { get; set; }
    public AAMMViewModel()
    {
        actz = new List<Actors>();
        mvz = new List<Movies>();
    }
}

它没有给出期望的结果,我知道Linq查询的逻辑出了点问题。 如果有人在这方面有专业知识,请指导我。

2 个答案:

答案 0 :(得分:0)

您可以这样做:

var act = 
    (from i in _context.act
    where i.Id.SelectMany(id => _context.mvz.Contains(id.Id))
    select i).ToList();

答案 1 :(得分:0)

您确定演员和电影的ID是否相同。如果是,请执行联接并使用正确的属性名称。您正在使用行话代替行话中的行话

public class AAMMViewModel
{
    public List<Actors> actz { get; set; }
    public List<Movies> mvz { get; set; }
    public AAMMViewModel()
    {
        actz = new List<Actors>();
        mvz = new List<Movies>();
    }
}

var act = (from i in _context.actz
                   join j in _context.mvz ON i.Id == j.Id
                   select i).ToList();