检索复合键表数据的 Linq 查询失败



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

你可以这样做:

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

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

最新更新