不成功的Linq查询检索复合密钥表的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不成功的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();
以上是关于不成功的Linq查询检索复合密钥表的数据的主要内容,如果未能解决你的问题,请参考以下文章