将关系数据列表返回到局部视图

时间:2017-12-14 01:26:40

标签: asp.net-mvc

我想从产品的关系匹配数据中将列表返回到我的部分视图。我附上了edmx文件的图片,你可以了解他们的关系状态!问题是我只是不知道我怎么能写这个查询或我需要任何迭代过程来做到这一点。主要目标是:我想获得当前用户已添加书签的所有产品。欢迎任何问题。提前致谢

Picture1

[ChildActionOnly]
        [Authorize]
        public PartialViewResult _UserBookmark(string id)
        {
            using (mydb db = new mydb())
            {
                int userId = db.Users.Where(x => x.Email == id).FirstOrDefault().UserId;//here i am getting user primary key id
                var ProductIds = db.Bookmarks.Where(x => x.UserId == userId).ToList();//here i am getting all Product primary keys under that user
                var ListOfProducts = db.Products.Where(x=>x.ProductId == "i dont know how to do it") // here i wanted to return matched all products 
                return PartialView("_UserBookmark",ListOfProducts);
            }

        }

1 个答案:

答案 0 :(得分:1)

您可以使用.Contains语句返回ProductId集合中ProductIds所在的产品。

将方法更改为

[ChildActionOnly]
[Authorize]
public PartialViewResult _UserBookmark(string id)
{
    using (mydb db = new mydb())
    {
        int userId = db.Users.Where(x => x.Email == id).FirstOrDefault().UserId;
        // Get a collection of the ProductId's
        IEnumerable<int> ProductIds = db.Bookmarks
            .Where(x => x.UserId == userId).Select(x => x.ProductId);
        IEnumerable<Product> ListOfProducts = db.Products
            .Where(x => ProductIds.Contains(x.ProductId))
        return PartialView("_UserBookmark", ListOfProducts);
    }
}

注意,如果结果是针对当前用户的,那么请考虑让方法中的当前用户将Email传递给方法。另请注意,.FirstOrDefault().UserId会抛出异常,因为您向方法传递的值不正确,导致Usernull