不成功的Linq查询检索复合密钥表的数据

问题描述 投票:0回答:2

您好我想写一个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查询的逻辑有问题。如果有人在这方面有专业知识,请指导我。

c# asp.net-mvc linq ef-code-first
2个回答
0
投票

你可以这样做:

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

0
投票

你确定演员和电影的ID是一样的吗?如果是,请执行连接并使用正确的属性名称。你在你的linq中使用act代替actz

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();
© www.soinside.com 2019 - 2024. All rights reserved.