为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
人到中年有点甜 2022-01-09 15:36:09
我想编写一个 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 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

你可以这样做:


var act = 

    (from i in _context.act

    where i.Id.SelectMany(id => _context.mvz.Contains(id.Id))

    select i).ToList();


查看完整回答
反对 回复 2022-01-09
?
森林海

TA贡献2011条经验 获得超2个赞

你确定演员和电影的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();


查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号