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