【问题标题】:Unsuccessful Linq query to retrieve data of composite key table检索复合键表数据的 Linq 查询不成功
【发布时间】:2019-02-14 01:21:18
【问题描述】:

您好,我想编写一个 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


    【解决方案1】:

    你可以这样做:

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

    【讨论】:

    • 谢谢,但它给出了一个错误,不支持 All(),它说它不包含 All() 的定义
    • 也不支持,事实上在 I.Id 之后它会打开一个列表,其中只包含一些东西,比如比较、等于、获取哈希码、gettype、gettypecode 和 tostring.... 所有() 和 SelectMany() 不在列表中且不受支持,我们是否缺少命名空间?
    【解决方案2】:

    您确定 Actors 和 Movies 的 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();
    

    【讨论】:

    • 您好,不,id 不一样,这只是一个示例,我正在努力创建逻辑本身,我想检索所有包含电影 id 的演员 id.. 换句话说,无论存在于复合键表..
    猜你喜欢
    • 2012-01-07
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多